Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2842e50c authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Use std::move for dictionary properties.

Change-Id: I15056b36b7493f4bac1dbcbb46a0b44343ede153
parent ed77b37e
Loading
Loading
Loading
Loading
+19 −18
Original line number Diff line number Diff line
@@ -364,10 +364,12 @@ static bool latinime_BinaryDictionary_addUnigramEntry(JNIEnv *env, jclass clazz,
    int codePoints[codePointCount];
    env->GetIntArrayRegion(word, 0, codePointCount, codePoints);
    std::vector<UnigramProperty::ShortcutProperty> shortcuts;
    {
        std::vector<int> shortcutTargetCodePoints;
        JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints);
        if (!shortcutTargetCodePoints.empty()) {
        shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability);
            shortcuts.emplace_back(std::move(shortcutTargetCodePoints), shortcutProbability);
        }
    }
    // Use 1 for count to indicate the word has inputted.
    const UnigramProperty unigramProperty(isBeginningOfSentence, isNotAWord,
@@ -401,11 +403,9 @@ static bool latinime_BinaryDictionary_addNgramEntry(JNIEnv *env, jclass clazz, j
    jsize wordLength = env->GetArrayLength(word);
    int wordCodePoints[wordLength];
    env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints);
    const std::vector<int> bigramTargetCodePoints(
            wordCodePoints, wordCodePoints + wordLength);
    // Use 1 for count to indicate the bigram has inputted.
    const BigramProperty bigramProperty(&bigramTargetCodePoints, probability,
            timestamp, 0 /* level */, 1 /* count */);
    const BigramProperty bigramProperty(CodePointArrayView(wordCodePoints, wordLength).toVector(),
            probability, timestamp, 0 /* level */, 1 /* count */);
    return dictionary->addNgramEntry(&prevWordsInfo, &bigramProperty);
}

@@ -483,12 +483,14 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j
        jintArray shortcutTarget = static_cast<jintArray>(
                env->GetObjectField(languageModelParam, shortcutTargetFieldId));
        std::vector<UnigramProperty::ShortcutProperty> shortcuts;
        {
            std::vector<int> shortcutTargetCodePoints;
            JniDataUtils::jintarrayToVector(env, shortcutTarget, &shortcutTargetCodePoints);
            if (!shortcutTargetCodePoints.empty()) {
                jint shortcutProbability =
                        env->GetIntField(languageModelParam, shortcutProbabilityFieldId);
            shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability);
                shortcuts.emplace_back(std::move(shortcutTargetCodePoints), shortcutProbability);
            }
        }
        // Use 1 for count to indicate the word has inputted.
        const UnigramProperty unigramProperty(false /* isBeginningOfSentence */, isNotAWord,
@@ -498,11 +500,10 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j
                &unigramProperty);
        if (word0) {
            jint bigramProbability = env->GetIntField(languageModelParam, bigramProbabilityFieldId);
            const std::vector<int> bigramTargetCodePoints(
                    word1CodePoints, word1CodePoints + word1Length);
            // Use 1 for count to indicate the bigram has inputted.
            const BigramProperty bigramProperty(&bigramTargetCodePoints, bigramProbability,
                    timestamp, 0 /* level */, 1 /* count */);
            const BigramProperty bigramProperty(
                    CodePointArrayView(word1CodePoints, word1Length).toVector(),
                    bigramProbability, timestamp, 0 /* level */, 1 /* count */);
            const PrevWordsInfo prevWordsInfo(word0CodePoints, word0Length,
                    false /* isBeginningOfSentence */);
            dictionary->addNgramEntry(&prevWordsInfo, &bigramProperty);
+3 −3
Original line number Diff line number Diff line
@@ -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 {
+3 −2
Original line number Diff line number Diff line
@@ -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;
+2 −3
Original line number Diff line number Diff line
@@ -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,
+7 −7
Original line number Diff line number Diff line
@@ -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,
Loading