diff options
Diffstat (limited to 'native/jni/src')
7 files changed, 32 insertions, 30 deletions
diff --git a/native/jni/src/suggest/core/dictionary/property/bigram_property.h b/native/jni/src/suggest/core/dictionary/property/bigram_property.h index 343af143c..9e0baa032 100644 --- a/native/jni/src/suggest/core/dictionary/property/bigram_property.h +++ b/native/jni/src/suggest/core/dictionary/property/bigram_property.h @@ -26,9 +26,9 @@ namespace latinime { // TODO: Change to NgramProperty. class BigramProperty { public: - BigramProperty(const std::vector<int> *const targetCodePoints, - const int probability, const int timestamp, const int level, const int count) - : mTargetCodePoints(*targetCodePoints), mProbability(probability), + BigramProperty(const std::vector<int> &&targetCodePoints, const int probability, + const int timestamp, const int level, const int count) + : mTargetCodePoints(std::move(targetCodePoints)), mProbability(probability), mTimestamp(timestamp), mLevel(level), mCount(count) {} const std::vector<int> *getTargetCodePoints() const { diff --git a/native/jni/src/suggest/core/dictionary/property/unigram_property.h b/native/jni/src/suggest/core/dictionary/property/unigram_property.h index 65c8333bb..b7e7d6686 100644 --- a/native/jni/src/suggest/core/dictionary/property/unigram_property.h +++ b/native/jni/src/suggest/core/dictionary/property/unigram_property.h @@ -27,8 +27,9 @@ class UnigramProperty { public: class ShortcutProperty { public: - ShortcutProperty(const std::vector<int> *const targetCodePoints, const int probability) - : mTargetCodePoints(*targetCodePoints), mProbability(probability) {} + ShortcutProperty(const std::vector<int> &&targetCodePoints, const int probability) + : mTargetCodePoints(std::move(targetCodePoints)), + mProbability(probability) {} const std::vector<int> *getTargetCodePoints() const { return &mTargetCodePoints; diff --git a/native/jni/src/suggest/core/dictionary/property/word_property.h b/native/jni/src/suggest/core/dictionary/property/word_property.h index f78380e15..4e6febb3f 100644 --- a/native/jni/src/suggest/core/dictionary/property/word_property.h +++ b/native/jni/src/suggest/core/dictionary/property/word_property.h @@ -23,7 +23,6 @@ #include "jni.h" #include "suggest/core/dictionary/property/bigram_property.h" #include "suggest/core/dictionary/property/unigram_property.h" -#include "utils/int_array_view.h" namespace latinime { @@ -34,9 +33,9 @@ class WordProperty { WordProperty() : mCodePoints(), mUnigramProperty(), mBigrams() {} - WordProperty(const CodePointArrayView codePoints, const UnigramProperty *const unigramProperty, + WordProperty(const std::vector<int> &&codePoints, const UnigramProperty *const unigramProperty, const std::vector<BigramProperty> *const bigrams) - : mCodePoints(codePoints.begin(), codePoints.end()), mUnigramProperty(*unigramProperty), + : mCodePoints(std::move(codePoints)), mUnigramProperty(*unigramProperty), mBigrams(*bigrams) {} void outputProperties(JNIEnv *const env, jintArray outCodePoints, jbooleanArray outFlags, diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp index 3187aa9ac..f752f89f1 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp @@ -521,15 +521,14 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( const int codePointCount = getCodePointsAndReturnCodePointCount( getWordIdFromTerminalPtNodePos(word1TerminalPtNodePos), MAX_WORD_LENGTH, bigramWord1CodePoints); - const std::vector<int> word1(bigramWord1CodePoints, - bigramWord1CodePoints + codePointCount); const HistoricalInfo *const historicalInfo = bigramEntry.getHistoricalInfo(); const int probability = bigramEntry.hasHistoricalInfo() ? ForgettingCurveUtils::decodeProbability( bigramEntry.getHistoricalInfo(), mHeaderPolicy) : bigramEntry.getProbability(); - bigrams.emplace_back(&word1, probability, - historicalInfo->getTimeStamp(), historicalInfo->getLevel(), + bigrams.emplace_back( + CodePointArrayView(bigramWord1CodePoints, codePointCount).toVector(), + probability, historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount()); } } @@ -546,15 +545,16 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( int shortcutProbability = NOT_A_PROBABILITY; shortcutDictContent->getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH, shortcutTarget, &shortcutTargetLength, &shortcutProbability, &hasNext, &shortcutPos); - const std::vector<int> target(shortcutTarget, shortcutTarget + shortcutTargetLength); - shortcuts.emplace_back(&target, shortcutProbability); + shortcuts.emplace_back( + CodePointArrayView(shortcutTarget, shortcutTargetLength).toVector(), + shortcutProbability); } } const UnigramProperty unigramProperty(ptNodeParams.representsBeginningOfSentence(), ptNodeParams.isNotAWord(), ptNodeParams.isBlacklisted(), ptNodeParams.getProbability(), historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount(), &shortcuts); - return WordProperty(wordCodePoints, &unigramProperty, &bigrams); + return WordProperty(wordCodePoints.toVector(), &unigramProperty, &bigrams); } int Ver4PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints, diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp index 20e0e7476..13cf9a5a8 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp @@ -449,11 +449,10 @@ const WordProperty PatriciaTriePolicy::getWordProperty( const int word1CodePointCount = getCodePointsAndProbabilityAndReturnCodePointCount( getWordIdFromTerminalPtNodePos(bigramsIt.getBigramPos()), MAX_WORD_LENGTH, bigramWord1CodePoints, &word1Probability); - const std::vector<int> word1(bigramWord1CodePoints, - bigramWord1CodePoints + word1CodePointCount); const int probability = getProbability(word1Probability, bigramsIt.getProbability()); - bigrams.emplace_back(&word1, probability, - NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */); + bigrams.emplace_back( + CodePointArrayView(bigramWord1CodePoints, word1CodePointCount).toVector(), + probability, NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */); } } // Fetch shortcut information. @@ -469,17 +468,17 @@ const WordProperty PatriciaTriePolicy::getWordProperty( hasNext = ShortcutListReadingUtils::hasNext(shortcutFlags); const int shortcutTargetLength = ShortcutListReadingUtils::readShortcutTarget( mBuffer, MAX_WORD_LENGTH, shortcutTargetCodePoints, &shortcutPos); - const std::vector<int> shortcutTarget(shortcutTargetCodePoints, - shortcutTargetCodePoints + shortcutTargetLength); const int shortcutProbability = ShortcutListReadingUtils::getProbabilityFromFlags(shortcutFlags); - shortcuts.emplace_back(&shortcutTarget, shortcutProbability); + shortcuts.emplace_back( + CodePointArrayView(shortcutTargetCodePoints, shortcutTargetLength).toVector(), + shortcutProbability); } } const UnigramProperty unigramProperty(ptNodeParams.representsBeginningOfSentence(), ptNodeParams.isNotAWord(), ptNodeParams.isBlacklisted(), ptNodeParams.getProbability(), NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */, &shortcuts); - return WordProperty(wordCodePoints, &unigramProperty, &bigrams); + return WordProperty(wordCodePoints.toVector(), &unigramProperty, &bigrams); } int PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints, diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp index 0349ba4a0..06f79ba0e 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp @@ -464,15 +464,13 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( prevWordIds)) { const int codePointCount = getCodePointsAndReturnCodePointCount(entry.getWordId(), MAX_WORD_LENGTH, bigramWord1CodePoints); - const std::vector<int> word1(bigramWord1CodePoints, - bigramWord1CodePoints + codePointCount); const ProbabilityEntry probabilityEntry = entry.getProbabilityEntry(); const HistoricalInfo *const historicalInfo = probabilityEntry.getHistoricalInfo(); const int probability = probabilityEntry.hasHistoricalInfo() ? ForgettingCurveUtils::decodeProbability(historicalInfo, mHeaderPolicy) : probabilityEntry.getProbability(); - bigrams.emplace_back(&word1, probability, - historicalInfo->getTimeStamp(), historicalInfo->getLevel(), + bigrams.emplace_back(CodePointArrayView(bigramWord1CodePoints, codePointCount).toVector(), + probability, historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount()); } // Fetch shortcut information. @@ -488,15 +486,16 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( int shortcutProbability = NOT_A_PROBABILITY; shortcutDictContent->getShortcutEntryAndAdvancePosition(MAX_WORD_LENGTH, shortcutTarget, &shortcutTargetLength, &shortcutProbability, &hasNext, &shortcutPos); - const std::vector<int> target(shortcutTarget, shortcutTarget + shortcutTargetLength); - shortcuts.emplace_back(&target, shortcutProbability); + shortcuts.emplace_back( + CodePointArrayView(shortcutTarget, shortcutTargetLength).toVector(), + shortcutProbability); } } const UnigramProperty unigramProperty(probabilityEntry.representsBeginningOfSentence(), probabilityEntry.isNotAWord(), probabilityEntry.isBlacklisted(), probabilityEntry.getProbability(), historicalInfo->getTimeStamp(), historicalInfo->getLevel(), historicalInfo->getCount(), &shortcuts); - return WordProperty(wordCodePoints, &unigramProperty, &bigrams); + return WordProperty(wordCodePoints.toVector(), &unigramProperty, &bigrams); } int Ver4PatriciaTriePolicy::getNextWordAndNextToken(const int token, int *const outCodePoints, diff --git a/native/jni/src/utils/int_array_view.h b/native/jni/src/utils/int_array_view.h index f3a8589ca..408373176 100644 --- a/native/jni/src/utils/int_array_view.h +++ b/native/jni/src/utils/int_array_view.h @@ -129,6 +129,10 @@ class IntArrayView { return mPtr[mSize - 1]; } + AK_FORCE_INLINE std::vector<int> toVector() const { + return std::vector<int>(begin(), end()); + } + private: DISALLOW_ASSIGNMENT_OPERATOR(IntArrayView); |