diff options
author | 2013-09-17 09:18:32 +0000 | |
---|---|---|
committer | 2013-09-17 09:18:32 +0000 | |
commit | ac7e005ef0013fdd9af173e7bce968e26100949d (patch) | |
tree | 7a041dc2c0929393495b4db7ece5137c02513c52 /java/src/com/android/inputmethod/latin/BinaryDictionary.java | |
parent | d9f450ef00f09a9eccfc677968b46e072267a5f2 (diff) | |
parent | d0246277fde27e9c40a270e206f1d106811e847f (diff) | |
download | latinime-ac7e005ef0013fdd9af173e7bce968e26100949d.tar.gz latinime-ac7e005ef0013fdd9af173e7bce968e26100949d.tar.xz latinime-ac7e005ef0013fdd9af173e7bce968e26100949d.zip |
Merge "Prepare dictionary saving in native code."
Diffstat (limited to 'java/src/com/android/inputmethod/latin/BinaryDictionary.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/BinaryDictionary.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java index dae56b52a..709b0a16e 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java @@ -19,6 +19,7 @@ package com.android.inputmethod.latin; import android.text.TextUtils; import android.util.SparseArray; +import com.android.inputmethod.annotations.UsedForTesting; import com.android.inputmethod.keyboard.ProximityInfo; import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; import com.android.inputmethod.latin.settings.NativeSuggestOptions; @@ -47,6 +48,7 @@ public final class BinaryDictionary extends Dictionary { private long mNativeDict; private final Locale mLocale; private final long mDictSize; + private final String mDictFilePath; private final int[] mInputCodePoints = new int[MAX_WORD_LENGTH]; private final int[] mOutputCodePoints = new int[MAX_WORD_LENGTH * MAX_RESULTS]; private final int[] mSpaceIndices = new int[MAX_RESULTS]; @@ -91,6 +93,7 @@ public final class BinaryDictionary extends Dictionary { super(dictType); mLocale = locale; mDictSize = length; + mDictFilePath = filename; mNativeSuggestOptions.setUseFullEditDistance(useFullEditDistance); loadDictionary(filename, offset, length, isUpdatable); } @@ -101,6 +104,9 @@ public final class BinaryDictionary extends Dictionary { private static native long openNative(String sourceDir, long dictOffset, long dictSize, boolean isUpdatable); + private static native void flushNative(long dict, String filePath); + private static native boolean needsToRunGCNative(long dict); + private static native void flushWithGCNative(long dict, String filePath); private static native void closeNative(long dict); private static native int getProbabilityNative(long dict, int[] word); private static native boolean isValidBigramNative(long dict, int[] word0, int[] word1); @@ -261,6 +267,24 @@ public final class BinaryDictionary extends Dictionary { removeBigramWordsNative(mNativeDict, codePoints0, codePoints1); } + @UsedForTesting + public void flush() { + if (!isValidDictionary()) return; + flushNative(mNativeDict, mDictFilePath); + } + + @UsedForTesting + public void flushWithGC() { + if (!isValidDictionary()) return; + flushWithGCNative(mNativeDict, mDictFilePath); + } + + @UsedForTesting + public boolean needsToRunGC() { + if (!isValidDictionary()) return false; + return needsToRunGCNative(mNativeDict); + } + @Override public boolean shouldAutoCommit(final SuggestedWordInfo candidate) { // TODO: actually use the confidence rather than use this completely broken heuristic |