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

Commit dfc82fa3 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge changes I210acb81,Ie9508788

* changes:
  Make NgramProperty have NgramContext.
  Create .cpp file for NgramContext.
parents 2105aa3e 88bb28c1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ LATIN_IME_CORE_SRC_FILES := \
        proximity_info_state_utils.cpp) \
    suggest/core/policy/weighting.cpp \
    suggest/core/session/dic_traverse_session.cpp \
    suggest/core/session/ngram_context.cpp \
    $(addprefix suggest/core/result/, \
        suggestion_results.cpp \
        suggestions_output_utils.cpp) \
+8 −10
Original line number Diff line number Diff line
@@ -409,9 +409,10 @@ static bool latinime_BinaryDictionary_addNgramEntry(JNIEnv *env, jclass clazz, j
    int wordCodePoints[wordLength];
    env->GetIntArrayRegion(word, 0, wordLength, wordCodePoints);
    // Use 1 for count to indicate the ngram has inputted.
    const NgramProperty ngramProperty(CodePointArrayView(wordCodePoints, wordLength).toVector(),
    const NgramProperty ngramProperty(ngramContext,
            CodePointArrayView(wordCodePoints, wordLength).toVector(),
            probability, HistoricalInfo(timestamp, 0 /* level */, 1 /* count */));
    return dictionary->addNgramEntry(&ngramContext, &ngramProperty);
    return dictionary->addNgramEntry(&ngramProperty);
}

static bool latinime_BinaryDictionary_removeNgramEntry(JNIEnv *env, jclass clazz, jlong dict,
@@ -527,12 +528,12 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j
        if (word0) {
            jint bigramProbability = env->GetIntField(languageModelParam, bigramProbabilityFieldId);
            // Use 1 for count to indicate the bigram has inputted.
            const NgramProperty ngramProperty(
                    CodePointArrayView(word1CodePoints, word1Length).toVector(),
                    bigramProbability, HistoricalInfo(timestamp, 0 /* level */, 1 /* count */));
            const NgramContext ngramContext(word0CodePoints, word0Length,
                    false /* isBeginningOfSentence */);
            dictionary->addNgramEntry(&ngramContext, &ngramProperty);
            const NgramProperty ngramProperty(ngramContext,
                    CodePointArrayView(word1CodePoints, word1Length).toVector(),
                    bigramProbability, HistoricalInfo(timestamp, 0 /* level */, 1 /* count */));
            dictionary->addNgramEntry(&ngramProperty);
        }
        if (dictionary->needsToRunGC(true /* mindsBlockByGC */)) {
            return i + 1;
@@ -642,11 +643,8 @@ static bool latinime_BinaryDictionary_migrateNative(JNIEnv *env, jclass clazz, j
                return false;
            }
        }
        const NgramContext ngramContext(wordCodePoints, wordCodePointCount,
                wordProperty.getUnigramProperty()->representsBeginningOfSentence());
        for (const NgramProperty &ngramProperty : *wordProperty.getNgramProperties()) {
            if (!dictionaryStructureWithBufferPolicy->addNgramEntry(&ngramContext,
                    &ngramProperty)) {
            if (!dictionaryStructureWithBufferPolicy->addNgramEntry(&ngramProperty)) {
                LogUtils::logToJava(env, "Cannot add ngram to the new dict.");
                return false;
            }
+2 −3
Original line number Diff line number Diff line
@@ -140,10 +140,9 @@ bool Dictionary::removeUnigramEntry(const CodePointArrayView codePoints) {
    return mDictionaryStructureWithBufferPolicy->removeUnigramEntry(codePoints);
}

bool Dictionary::addNgramEntry(const NgramContext *const ngramContext,
        const NgramProperty *const ngramProperty) {
bool Dictionary::addNgramEntry(const NgramProperty *const ngramProperty) {
    TimeKeeper::setCurrentTime();
    return mDictionaryStructureWithBufferPolicy->addNgramEntry(ngramContext, ngramProperty);
    return mDictionaryStructureWithBufferPolicy->addNgramEntry(ngramProperty);
}

bool Dictionary::removeNgramEntry(const NgramContext *const ngramContext,
+1 −2
Original line number Diff line number Diff line
@@ -85,8 +85,7 @@ class Dictionary {

    bool removeUnigramEntry(const CodePointArrayView codePoints);

    bool addNgramEntry(const NgramContext *const ngramContext,
            const NgramProperty *const ngramProperty);
    bool addNgramEntry(const NgramProperty *const ngramProperty);

    bool removeNgramEntry(const NgramContext *const ngramContext,
            const CodePointArrayView codePoints);
+10 −4
Original line number Diff line number Diff line
@@ -21,15 +21,20 @@

#include "defines.h"
#include "suggest/core/dictionary/property/historical_info.h"
#include "suggest/core/session/ngram_context.h"

namespace latinime {

class NgramProperty {
 public:
    NgramProperty(const std::vector<int> &&targetCodePoints, const int probability,
            const HistoricalInfo historicalInfo)
            : mTargetCodePoints(std::move(targetCodePoints)), mProbability(probability),
              mHistoricalInfo(historicalInfo) {}
    NgramProperty(const NgramContext &ngramContext, const std::vector<int> &&targetCodePoints,
            const int probability, const HistoricalInfo historicalInfo)
            : mNgramContext(ngramContext), mTargetCodePoints(std::move(targetCodePoints)),
              mProbability(probability), mHistoricalInfo(historicalInfo) {}

    const NgramContext *getNgramContext() const {
        return &mNgramContext;
    }

    const std::vector<int> *getTargetCodePoints() const {
        return &mTargetCodePoints;
@@ -48,6 +53,7 @@ class NgramProperty {
    DISALLOW_DEFAULT_CONSTRUCTOR(NgramProperty);
    DISALLOW_ASSIGNMENT_OPERATOR(NgramProperty);

    const NgramContext mNgramContext;
    const std::vector<int> mTargetCodePoints;
    const int mProbability;
    const HistoricalInfo mHistoricalInfo;
Loading