diff options
author | 2013-11-26 07:32:23 +0000 | |
---|---|---|
committer | 2013-11-26 07:32:23 +0000 | |
commit | 581ca435cfb0d348e8b6ee467a2da651aaf88aff (patch) | |
tree | ac297b9d52ad3ecbc6b88ccbe33b52dc9195a67d /java/src/com/android/inputmethod/latin/BinaryDictionary.java | |
parent | ad4216becd0db8e47246e656e33f875534520f19 (diff) | |
parent | ca16be755270cb3b9ee1173532fe7c0681a4a917 (diff) | |
download | latinime-581ca435cfb0d348e8b6ee467a2da651aaf88aff.tar.gz latinime-581ca435cfb0d348e8b6ee467a2da651aaf88aff.tar.xz latinime-581ca435cfb0d348e8b6ee467a2da651aaf88aff.zip |
Merge "Implement addMultipleDictionaryEntries as a jni method."
Diffstat (limited to 'java/src/com/android/inputmethod/latin/BinaryDictionary.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/BinaryDictionary.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java index fd296988e..1abbf3084 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -137,6 +137,8 @@ public final class BinaryDictionary extends Dictionary { private static native void addBigramWordsNative(long dict, int[] word0, int[] word1, int probability); private static native void removeBigramWordsNative(long dict, int[] word0, int[] word1); + private static native int addMultipleDictionaryEntriesNative(long dict, + LanguageModelParam[] languageModelParams, int startIndex); private static native int calculateProbabilityNative(long dict, int unigramProbability, int bigramProbability); private static native String getPropertyNative(long dict, String query); @@ -303,6 +305,46 @@ public final class BinaryDictionary extends Dictionary { removeBigramWordsNative(mNativeDict, codePoints0, codePoints1); } + public static class LanguageModelParam { + public final int[] mWord0; + public final int[] mWord1; + public final int mUnigramProbability; + public final int mBigramProbability; + + // Constructor for unigram. + public LanguageModelParam(final String word, final int unigramProbability) { + mWord0 = null; + mWord1 = StringUtils.toCodePointArray(word); + mUnigramProbability = unigramProbability; + mBigramProbability = NOT_A_PROBABILITY; + } + + // Constructor for unigram and bigram. + public LanguageModelParam(final String word0, final String word1, + final int unigramProbability, final int bigramProbability) { + mWord0 = StringUtils.toCodePointArray(word0); + mWord1 = StringUtils.toCodePointArray(word1); + mUnigramProbability = unigramProbability; + mBigramProbability = bigramProbability; + } + } + + public void addMultipleDictionaryEntries(final LanguageModelParam[] languageModelParams) { + if (!isValidDictionary()) return; + int processedParamCount = 0; + while (processedParamCount < languageModelParams.length) { + if (needsToRunGC(true /* mindsBlockByGC */)) { + flushWithGC(); + } + processedParamCount = addMultipleDictionaryEntriesNative(mNativeDict, + languageModelParams, processedParamCount); + if (processedParamCount <= 0) { + return; + } + } + + } + private void reopen() { close(); final File dictFile = new File(mDictFilePath); |