aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-05-13 01:28:30 +0900
committerKeisuke Kuroyanagi <ksk@google.com>2014-05-13 01:28:30 +0900
commit620a05ae59ec9f7be39557094fc306c51c712ca1 (patch)
tree52f30e34edace197701bd95b7f63c07af66acefe /native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
parent9d7e8c717f56a8b706a174fd3d5a2864d08d320c (diff)
downloadlatinime-620a05ae59ec9f7be39557094fc306c51c712ca1.tar.gz
latinime-620a05ae59ec9f7be39557094fc306c51c712ca1.tar.xz
latinime-620a05ae59ec9f7be39557094fc306c51c712ca1.zip
Support bigram historical information migration.
Bug: 13406708 Change-Id: I4bae53e43cb7653eac3b5bd13da2d2bc8aaf88a9
Diffstat (limited to 'native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp')
-rw-r--r--native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
index a3d8ec158..a55b2da96 100644
--- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
@@ -335,7 +335,7 @@ static void latinime_BinaryDictionary_addUnigramWord(JNIEnv *env, jclass clazz,
if (!shortcutTargetCodePoints.empty()) {
shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability);
}
- // Use 1 for count to indicate the word has inputed.
+ // Use 1 for count to indicate the word has inputted.
const UnigramProperty unigramProperty(isNotAWord, isBlacklisted,
probability, timestamp, 0 /* level */, 1 /* count */, &shortcuts);
dictionary->addUnigramWord(codePoints, codePointCount, &unigramProperty);
@@ -353,8 +353,12 @@ static void latinime_BinaryDictionary_addBigramWords(JNIEnv *env, jclass clazz,
jsize word1Length = env->GetArrayLength(word1);
int word1CodePoints[word1Length];
env->GetIntArrayRegion(word1, 0, word1Length, word1CodePoints);
- dictionary->addBigramWords(word0CodePoints, word0Length, word1CodePoints,
- word1Length, probability, timestamp);
+ const std::vector<int> bigramTargetCodePoints(
+ word1CodePoints, word1CodePoints + word1Length);
+ // Use 1 for count to indicate the bigram has inputted.
+ const BigramProperty bigramProperty(&bigramTargetCodePoints, probability,
+ timestamp, 0 /* level */, 1 /* count */);
+ dictionary->addBigramWords(word0CodePoints, word0Length, &bigramProperty);
}
static void latinime_BinaryDictionary_removeBigramWords(JNIEnv *env, jclass clazz, jlong dict,
@@ -437,14 +441,18 @@ static int latinime_BinaryDictionary_addMultipleDictionaryEntries(JNIEnv *env, j
env->GetIntField(languageModelParam, shortcutProbabilityFieldId);
shortcuts.emplace_back(&shortcutTargetCodePoints, shortcutProbability);
}
- // Use 1 for count to indicate the word has inputed.
+ // Use 1 for count to indicate the word has inputted.
const UnigramProperty unigramProperty(isNotAWord, isBlacklisted,
unigramProbability, timestamp, 0 /* level */, 1 /* count */, &shortcuts);
dictionary->addUnigramWord(word1CodePoints, word1Length, &unigramProperty);
if (word0) {
jint bigramProbability = env->GetIntField(languageModelParam, bigramProbabilityFieldId);
- dictionary->addBigramWords(word0CodePoints, word0Length, word1CodePoints, word1Length,
- bigramProbability, timestamp);
+ const std::vector<int> bigramTargetCodePoints(
+ word1CodePoints, word1CodePoints + word1Length);
+ // Use 1 for count to indicate the bigram has inputted.
+ const BigramProperty bigramProperty(&bigramTargetCodePoints, bigramProbability,
+ timestamp, 0 /* level */, 1 /* count */);
+ dictionary->addBigramWords(word0CodePoints, word0Length, &bigramProperty);
}
if (dictionary->needsToRunGC(true /* mindsBlockByGC */)) {
return i + 1;
@@ -558,11 +566,9 @@ static bool latinime_BinaryDictionary_migrateNative(JNIEnv *env, jclass clazz, j
return false;
}
}
- for (const BigramProperty &bigarmProperty : *wordProperty.getBigramProperties()) {
- const std::vector<int> *targetCodePoints = bigarmProperty.getTargetCodePoints();
+ for (const BigramProperty &bigramProperty : *wordProperty.getBigramProperties()) {
if (!dictionaryStructureWithBufferPolicy->addBigramWords(wordCodePoints, wordLength,
- targetCodePoints->data(), targetCodePoints->size(),
- bigarmProperty.getProbability(), bigarmProperty.getTimestamp())) {
+ &bigramProperty)) {
LogUtils::logToJava(env, "Cannot add bigram to the new dict.");
return false;
}