Loading java/src/com/android/inputmethod/latin/BinaryDictionary.java +2 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,8 @@ public final class BinaryDictionary extends Dictionary { private final int[] mSpaceIndices = new int[MAX_RESULTS]; private final int[] mOutputScores = new int[MAX_RESULTS]; private final int[] mOutputTypes = new int[MAX_RESULTS]; private final int[] mOutputAutoCommitFirstWordConfidence = new int[MAX_RESULTS]; // Only one result is ever used private final int[] mOutputAutoCommitFirstWordConfidence = new int[1]; private final NativeSuggestOptions mNativeSuggestOptions = new NativeSuggestOptions(); Loading native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +10 −2 Original line number Diff line number Diff line Loading @@ -142,7 +142,7 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, j jintArray inputCodePointsArray, jint inputSize, jint commitPoint, jintArray suggestOptions, jintArray prevWordCodePointsForBigrams, jintArray outputCodePointsArray, jintArray scoresArray, jintArray spaceIndicesArray, jintArray outputTypesArray, jintArray outputAutoCommitFirstWordConfidence) { jintArray outputAutoCommitFirstWordConfidenceArray) { Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict); if (!dictionary) return 0; ProximityInfo *pInfo = reinterpret_cast<ProximityInfo *>(proximityInfo); Loading Loading @@ -196,17 +196,23 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, j int spaceIndices[spaceIndicesLength]; const jsize outputTypesLength = env->GetArrayLength(outputTypesArray); int outputTypes[outputTypesLength]; const jsize outputAutoCommitFirstWordConfidenceLength = env->GetArrayLength(outputAutoCommitFirstWordConfidenceArray); // We only use the first result, as obviously we will only ever autocommit the first one ASSERT(outputAutoCommitFirstWordConfidenceLength == 1); int outputAutoCommitFirstWordConfidence[outputAutoCommitFirstWordConfidenceLength]; memset(outputCodePoints, 0, sizeof(outputCodePoints)); memset(scores, 0, sizeof(scores)); memset(spaceIndices, 0, sizeof(spaceIndices)); memset(outputTypes, 0, sizeof(outputTypes)); memset(outputAutoCommitFirstWordConfidence, 0, sizeof(outputAutoCommitFirstWordConfidence)); int count; if (givenSuggestOptions.isGesture() || inputSize > 0) { count = dictionary->getSuggestions(pInfo, traverseSession, xCoordinates, yCoordinates, times, pointerIds, inputCodePoints, inputSize, prevWordCodePoints, prevWordCodePointsLength, commitPoint, &givenSuggestOptions, outputCodePoints, scores, spaceIndices, outputTypes); scores, spaceIndices, outputTypes, outputAutoCommitFirstWordConfidence); } else { count = dictionary->getBigrams(prevWordCodePoints, prevWordCodePointsLength, outputCodePoints, scores, outputTypes); Loading @@ -217,6 +223,8 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, j env->SetIntArrayRegion(scoresArray, 0, scoresLength, scores); env->SetIntArrayRegion(spaceIndicesArray, 0, spaceIndicesLength, spaceIndices); env->SetIntArrayRegion(outputTypesArray, 0, outputTypesLength, outputTypes); env->SetIntArrayRegion(outputAutoCommitFirstWordConfidenceArray, 0, outputAutoCommitFirstWordConfidenceLength, outputAutoCommitFirstWordConfidence); return count; } Loading native/jni/src/defines.h +3 −0 Original line number Diff line number Diff line Loading @@ -298,6 +298,9 @@ static inline void prof_out(void) { #define NOT_AN_INDEX (-1) #define NOT_A_PROBABILITY (-1) #define NOT_A_DICT_POS (S_INT_MIN) // A special value to mean the first word confidence makes no sense in this case, // e.g. this is not a multi-word suggestion. #define NOT_A_FIRST_WORD_CONFIDENCE (S_INT_MIN) #define KEYCODE_SPACE ' ' #define KEYCODE_SINGLE_QUOTE '\'' Loading native/jni/src/suggest/core/dictionary/dictionary.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -55,14 +55,14 @@ int Dictionary::getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints, int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint, const SuggestOptions *const suggestOptions, int *outWords, int *frequencies, int *spaceIndices, int *outputTypes) const { int *spaceIndices, int *outputTypes, int *outputAutoCommitFirstWordConfidence) const { int result = 0; if (suggestOptions->isGesture()) { DicTraverseSession::initSessionInstance( traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions); result = mGestureSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint, outWords, frequencies, spaceIndices, outputTypes); frequencies, spaceIndices, outputTypes, outputAutoCommitFirstWordConfidence); if (DEBUG_DICT) { DUMP_RESULT(outWords, frequencies); } Loading @@ -72,7 +72,8 @@ int Dictionary::getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions); result = mTypingSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint, outWords, frequencies, spaceIndices, outputTypes); outWords, frequencies, spaceIndices, outputTypes, outputAutoCommitFirstWordConfidence); if (DEBUG_DICT) { DUMP_RESULT(outWords, frequencies); } Loading native/jni/src/suggest/core/dictionary/dictionary.h +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ class Dictionary { int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints, int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint, const SuggestOptions *const suggestOptions, int *outWords, int *frequencies, int *spaceIndices, int *outputTypes) const; int *spaceIndices, int *outputTypes, int *outputAutoCommitFirstWordConfidence) const; int getBigrams(const int *word, int length, int *outWords, int *frequencies, int *outputTypes) const; Loading Loading
java/src/com/android/inputmethod/latin/BinaryDictionary.java +2 −1 Original line number Diff line number Diff line Loading @@ -62,7 +62,8 @@ public final class BinaryDictionary extends Dictionary { private final int[] mSpaceIndices = new int[MAX_RESULTS]; private final int[] mOutputScores = new int[MAX_RESULTS]; private final int[] mOutputTypes = new int[MAX_RESULTS]; private final int[] mOutputAutoCommitFirstWordConfidence = new int[MAX_RESULTS]; // Only one result is ever used private final int[] mOutputAutoCommitFirstWordConfidence = new int[1]; private final NativeSuggestOptions mNativeSuggestOptions = new NativeSuggestOptions(); Loading
native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +10 −2 Original line number Diff line number Diff line Loading @@ -142,7 +142,7 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, j jintArray inputCodePointsArray, jint inputSize, jint commitPoint, jintArray suggestOptions, jintArray prevWordCodePointsForBigrams, jintArray outputCodePointsArray, jintArray scoresArray, jintArray spaceIndicesArray, jintArray outputTypesArray, jintArray outputAutoCommitFirstWordConfidence) { jintArray outputAutoCommitFirstWordConfidenceArray) { Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict); if (!dictionary) return 0; ProximityInfo *pInfo = reinterpret_cast<ProximityInfo *>(proximityInfo); Loading Loading @@ -196,17 +196,23 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, j int spaceIndices[spaceIndicesLength]; const jsize outputTypesLength = env->GetArrayLength(outputTypesArray); int outputTypes[outputTypesLength]; const jsize outputAutoCommitFirstWordConfidenceLength = env->GetArrayLength(outputAutoCommitFirstWordConfidenceArray); // We only use the first result, as obviously we will only ever autocommit the first one ASSERT(outputAutoCommitFirstWordConfidenceLength == 1); int outputAutoCommitFirstWordConfidence[outputAutoCommitFirstWordConfidenceLength]; memset(outputCodePoints, 0, sizeof(outputCodePoints)); memset(scores, 0, sizeof(scores)); memset(spaceIndices, 0, sizeof(spaceIndices)); memset(outputTypes, 0, sizeof(outputTypes)); memset(outputAutoCommitFirstWordConfidence, 0, sizeof(outputAutoCommitFirstWordConfidence)); int count; if (givenSuggestOptions.isGesture() || inputSize > 0) { count = dictionary->getSuggestions(pInfo, traverseSession, xCoordinates, yCoordinates, times, pointerIds, inputCodePoints, inputSize, prevWordCodePoints, prevWordCodePointsLength, commitPoint, &givenSuggestOptions, outputCodePoints, scores, spaceIndices, outputTypes); scores, spaceIndices, outputTypes, outputAutoCommitFirstWordConfidence); } else { count = dictionary->getBigrams(prevWordCodePoints, prevWordCodePointsLength, outputCodePoints, scores, outputTypes); Loading @@ -217,6 +223,8 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, j env->SetIntArrayRegion(scoresArray, 0, scoresLength, scores); env->SetIntArrayRegion(spaceIndicesArray, 0, spaceIndicesLength, spaceIndices); env->SetIntArrayRegion(outputTypesArray, 0, outputTypesLength, outputTypes); env->SetIntArrayRegion(outputAutoCommitFirstWordConfidenceArray, 0, outputAutoCommitFirstWordConfidenceLength, outputAutoCommitFirstWordConfidence); return count; } Loading
native/jni/src/defines.h +3 −0 Original line number Diff line number Diff line Loading @@ -298,6 +298,9 @@ static inline void prof_out(void) { #define NOT_AN_INDEX (-1) #define NOT_A_PROBABILITY (-1) #define NOT_A_DICT_POS (S_INT_MIN) // A special value to mean the first word confidence makes no sense in this case, // e.g. this is not a multi-word suggestion. #define NOT_A_FIRST_WORD_CONFIDENCE (S_INT_MIN) #define KEYCODE_SPACE ' ' #define KEYCODE_SINGLE_QUOTE '\'' Loading
native/jni/src/suggest/core/dictionary/dictionary.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -55,14 +55,14 @@ int Dictionary::getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints, int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint, const SuggestOptions *const suggestOptions, int *outWords, int *frequencies, int *spaceIndices, int *outputTypes) const { int *spaceIndices, int *outputTypes, int *outputAutoCommitFirstWordConfidence) const { int result = 0; if (suggestOptions->isGesture()) { DicTraverseSession::initSessionInstance( traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions); result = mGestureSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint, outWords, frequencies, spaceIndices, outputTypes); frequencies, spaceIndices, outputTypes, outputAutoCommitFirstWordConfidence); if (DEBUG_DICT) { DUMP_RESULT(outWords, frequencies); } Loading @@ -72,7 +72,8 @@ int Dictionary::getSuggestions(ProximityInfo *proximityInfo, DicTraverseSession traverseSession, this, prevWordCodePoints, prevWordLength, suggestOptions); result = mTypingSuggest->getSuggestions(proximityInfo, traverseSession, xcoordinates, ycoordinates, times, pointerIds, inputCodePoints, inputSize, commitPoint, outWords, frequencies, spaceIndices, outputTypes); outWords, frequencies, spaceIndices, outputTypes, outputAutoCommitFirstWordConfidence); if (DEBUG_DICT) { DUMP_RESULT(outWords, frequencies); } Loading
native/jni/src/suggest/core/dictionary/dictionary.h +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ class Dictionary { int *xcoordinates, int *ycoordinates, int *times, int *pointerIds, int *inputCodePoints, int inputSize, int *prevWordCodePoints, int prevWordLength, int commitPoint, const SuggestOptions *const suggestOptions, int *outWords, int *frequencies, int *spaceIndices, int *outputTypes) const; int *spaceIndices, int *outputTypes, int *outputAutoCommitFirstWordConfidence) const; int getBigrams(const int *word, int length, int *outWords, int *frequencies, int *outputTypes) const; Loading