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

Commit 88bb28c1 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Make NgramProperty have NgramContext.

Bug: 14425059
Change-Id: I210acb816b122857dbbe1ee4dd6a35c5335bf2bf
parent f87bb77a
Loading
Loading
Loading
Loading
+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,
@@ -526,12 +527,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;
@@ -641,11 +642,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;
+2 −2
Original line number Diff line number Diff line
@@ -34,9 +34,9 @@ class WordProperty {
            : mCodePoints(), mUnigramProperty(), mNgrams() {}

    WordProperty(const std::vector<int> &&codePoints, const UnigramProperty *const unigramProperty,
            const std::vector<NgramProperty> *const bigrams)
            const std::vector<NgramProperty> *const ngrams)
            : mCodePoints(std::move(codePoints)), mUnigramProperty(*unigramProperty),
              mNgrams(*bigrams) {}
              mNgrams(*ngrams) {}

    void outputProperties(JNIEnv *const env, jintArray outCodePoints, jbooleanArray outFlags,
            jintArray outProbabilityInfo, jobject outBigramTargets, jobject outBigramProbabilities,
Loading