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

Commit 6540132d authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android Git Automerger
Browse files

am de12fcb0: am 8b580819: Merge "Add unigram/bigram counting."

* commit 'de12fcb0':
  Add unigram/bigram counting.
parents 9cbb33f1 de12fcb0
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -48,6 +48,11 @@ public final class BinaryDictionary extends Dictionary {
    // TODO: Remove this heuristic.
    // TODO: Remove this heuristic.
    private static final int SPACE_COUNT_FOR_AUTO_COMMIT = 3;
    private static final int SPACE_COUNT_FOR_AUTO_COMMIT = 3;


    @UsedForTesting
    public static final String UNIGRAM_COUNT_QUERY = "UNIGRAM_COUNT";
    @UsedForTesting
    public static final String BIGRAM_COUNT_QUERY = "BIGRAM_COUNT";

    private long mNativeDict;
    private long mNativeDict;
    private final Locale mLocale;
    private final Locale mLocale;
    private final long mDictSize;
    private final long mDictSize;
@@ -129,6 +134,7 @@ public final class BinaryDictionary extends Dictionary {
    private static native void removeBigramWordsNative(long dict, int[] word0, int[] word1);
    private static native void removeBigramWordsNative(long dict, int[] word0, int[] word1);
    private static native int calculateProbabilityNative(long dict, int unigramProbability,
    private static native int calculateProbabilityNative(long dict, int unigramProbability,
            int bigramProbability);
            int bigramProbability);
    private static native String getPropertyNative(long dict, String query);


    @UsedForTesting
    @UsedForTesting
    public static boolean createEmptyDictFile(final String filePath, final long dictVersion,
    public static boolean createEmptyDictFile(final String filePath, final long dictVersion,
@@ -331,6 +337,12 @@ public final class BinaryDictionary extends Dictionary {
        return calculateProbabilityNative(mNativeDict, unigramProbability, bigramProbability);
        return calculateProbabilityNative(mNativeDict, unigramProbability, bigramProbability);
    }
    }


    @UsedForTesting
    public String getPropertyForTests(String query) {
        if (!isValidDictionary()) return "";
        return getPropertyNative(mNativeDict, query);
    }

    @Override
    @Override
    public boolean shouldAutoCommit(final SuggestedWordInfo candidate) {
    public boolean shouldAutoCommit(final SuggestedWordInfo candidate) {
        // TODO: actually use the confidence rather than use this completely broken heuristic
        // TODO: actually use the confidence rather than use this completely broken heuristic
+23 −0
Original line number Original line Diff line number Diff line
@@ -323,6 +323,24 @@ static int latinime_BinaryDictionary_calculateProbabilityNative(JNIEnv *env, jcl
            bigramProbability);
            bigramProbability);
}
}


static jstring latinime_BinaryDictionary_getProperty(JNIEnv *env, jclass clazz, jlong dict,
        jstring query) {
    Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
    if (!dictionary) {
        return env->NewStringUTF("");
    }
    const jsize queryUtf8Length = env->GetStringUTFLength(query);
    char queryChars[queryUtf8Length + 1];
    env->GetStringUTFRegion(query, 0, env->GetStringLength(query), queryChars);
    queryChars[queryUtf8Length] = '\0';
    static const int GET_PROPERTY_RESULT_LENGTH = 100;
    char resultChars[GET_PROPERTY_RESULT_LENGTH];
    resultChars[0] = '\0';
    dictionary->getDictionaryStructurePolicy()->getProperty(queryChars, resultChars,
            GET_PROPERTY_RESULT_LENGTH);
    return env->NewStringUTF(resultChars);
}

static const JNINativeMethod sMethods[] = {
static const JNINativeMethod sMethods[] = {
    {
    {
        const_cast<char *>("createEmptyDictFileNative"),
        const_cast<char *>("createEmptyDictFileNative"),
@@ -398,6 +416,11 @@ static const JNINativeMethod sMethods[] = {
        const_cast<char *>("calculateProbabilityNative"),
        const_cast<char *>("calculateProbabilityNative"),
        const_cast<char *>("(JII)I"),
        const_cast<char *>("(JII)I"),
        reinterpret_cast<void *>(latinime_BinaryDictionary_calculateProbabilityNative)
        reinterpret_cast<void *>(latinime_BinaryDictionary_calculateProbabilityNative)
    },
    {
        const_cast<char *>("getPropertyNative"),
        const_cast<char *>("(JLjava/lang/String;)Ljava/lang/String;"),
        reinterpret_cast<void *>(latinime_BinaryDictionary_getProperty)
    }
    }
};
};


+5 −0
Original line number Original line Diff line number Diff line
@@ -125,6 +125,11 @@ bool Dictionary::needsToRunGC() {
    return mDictionaryStructureWithBufferPolicy->needsToRunGC();
    return mDictionaryStructureWithBufferPolicy->needsToRunGC();
}
}


void Dictionary::getProperty(const char *const query, char *const outResult,
        const int maxResultLength) const {
    return mDictionaryStructureWithBufferPolicy->getProperty(query, outResult, maxResultLength);
}

void Dictionary::logDictionaryInfo(JNIEnv *const env) const {
void Dictionary::logDictionaryInfo(JNIEnv *const env) const {
    const int BUFFER_SIZE = 16;
    const int BUFFER_SIZE = 16;
    int dictionaryIdCodePointBuffer[BUFFER_SIZE];
    int dictionaryIdCodePointBuffer[BUFFER_SIZE];
+3 −0
Original line number Original line Diff line number Diff line
@@ -83,6 +83,9 @@ class Dictionary {


    bool needsToRunGC();
    bool needsToRunGC();


    void getProperty(const char *const query, char *const outResult,
            const int maxResultLength) const;

    const DictionaryStructureWithBufferPolicy *getDictionaryStructurePolicy() const {
    const DictionaryStructureWithBufferPolicy *getDictionaryStructurePolicy() const {
        return mDictionaryStructureWithBufferPolicy;
        return mDictionaryStructureWithBufferPolicy;
    }
    }
+3 −0
Original line number Original line Diff line number Diff line
@@ -80,6 +80,9 @@ class DictionaryStructureWithBufferPolicy {


    virtual bool needsToRunGC() const = 0;
    virtual bool needsToRunGC() const = 0;


    virtual void getProperty(const char *const query, char *const outResult,
            const int maxResultLength) const = 0;

 protected:
 protected:
    DictionaryStructureWithBufferPolicy() {}
    DictionaryStructureWithBufferPolicy() {}


Loading