Loading java/src/com/android/inputmethod/latin/BinaryDictionary.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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 Loading native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +23 −0 Original line number Original line Diff line number Diff line Loading @@ -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"), Loading Loading @@ -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) } } }; }; Loading native/jni/src/suggest/core/dictionary/dictionary.cpp +5 −0 Original line number Original line Diff line number Diff line Loading @@ -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]; Loading native/jni/src/suggest/core/dictionary/dictionary.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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 Loading
java/src/com/android/inputmethod/latin/BinaryDictionary.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading Loading @@ -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 Loading
native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +23 −0 Original line number Original line Diff line number Diff line Loading @@ -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"), Loading Loading @@ -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) } } }; }; Loading
native/jni/src/suggest/core/dictionary/dictionary.cpp +5 −0 Original line number Original line Diff line number Diff line Loading @@ -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]; Loading
native/jni/src/suggest/core/dictionary/dictionary.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading
native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -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