diff options
author | 2012-04-23 15:37:07 +0900 | |
---|---|---|
committer | 2012-04-23 16:05:36 +0900 | |
commit | 522a04ea5b249d0af556647d2abcad57e5b99b4f (patch) | |
tree | 7bb086debeed66c3b2fd32137db9b2586532026f /native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp | |
parent | 0df78d46da1ef0d42196f3baa9d5f6df5932afb6 (diff) | |
download | latinime-522a04ea5b249d0af556647d2abcad57e5b99b4f.tar.gz latinime-522a04ea5b249d0af556647d2abcad57e5b99b4f.tar.xz latinime-522a04ea5b249d0af556647d2abcad57e5b99b4f.zip |
Pass words as int[] to the native code.
We need to get the bigrams during the call to getSuggestions for
bug#6313806. We already give an int[] to getSuggestions and we
wanted to get rid of char[]'s anyway because it doesn't work with
surrogate pairs, so here we go.
Bug: 6313806
Change-Id: I56ce99f1db6b3302cdf42f0527343bded837091e
Diffstat (limited to 'native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp')
-rw-r--r-- | native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp index 2ef72e1e8..3e72ce684 100644 --- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp +++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp @@ -153,30 +153,30 @@ static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jobject object, } static int latinime_BinaryDictionary_getBigrams(JNIEnv *env, jobject object, jlong dict, - jcharArray prevWordArray, jint prevWordLength, jintArray inputArray, jint inputArraySize, + jintArray prevWordArray, jint prevWordLength, jintArray inputArray, jint inputArraySize, jcharArray outputArray, jintArray frequencyArray, jint maxWordLength, jint maxBigrams) { Dictionary *dictionary = (Dictionary*)dict; if (!dictionary) return 0; - jchar *prevWord = env->GetCharArrayElements(prevWordArray, 0); + jint *prevWord = env->GetIntArrayElements(prevWordArray, 0); int *inputCodes = env->GetIntArrayElements(inputArray, 0); jchar *outputChars = env->GetCharArrayElements(outputArray, 0); int *frequencies = env->GetIntArrayElements(frequencyArray, 0); - int count = dictionary->getBigrams((unsigned short*) prevWord, prevWordLength, inputCodes, + int count = dictionary->getBigrams(prevWord, prevWordLength, inputCodes, inputArraySize, (unsigned short*) outputChars, frequencies, maxWordLength, maxBigrams); env->ReleaseIntArrayElements(frequencyArray, frequencies, 0); env->ReleaseCharArrayElements(outputArray, outputChars, 0); env->ReleaseIntArrayElements(inputArray, inputCodes, JNI_ABORT); - env->ReleaseCharArrayElements(prevWordArray, prevWord, JNI_ABORT); + env->ReleaseIntArrayElements(prevWordArray, prevWord, JNI_ABORT); return count; } static jboolean latinime_BinaryDictionary_isValidWord(JNIEnv *env, jobject object, jlong dict, - jcharArray wordArray, jint wordLength) { + jintArray wordArray, jint wordLength) { Dictionary *dictionary = (Dictionary*)dict; if (!dictionary) return (jboolean) false; - jchar *word = env->GetCharArrayElements(wordArray, 0); - jboolean result = dictionary->isValidWord((unsigned short*) word, wordLength); - env->ReleaseCharArrayElements(wordArray, word, JNI_ABORT); + jint *word = env->GetIntArrayElements(wordArray, 0); + jboolean result = dictionary->isValidWord(word, wordLength); + env->ReleaseIntArrayElements(wordArray, word, JNI_ABORT); return result; } @@ -236,8 +236,8 @@ static JNINativeMethod sMethods[] = { {"closeNative", "(J)V", (void*)latinime_BinaryDictionary_close}, {"getSuggestionsNative", "(JJ[I[I[II[IZ[C[I)I", (void*)latinime_BinaryDictionary_getSuggestions}, - {"isValidWordNative", "(J[CI)Z", (void*)latinime_BinaryDictionary_isValidWord}, - {"getBigramsNative", "(J[CI[II[C[III)I", (void*)latinime_BinaryDictionary_getBigrams}, + {"isValidWordNative", "(J[II)Z", (void*)latinime_BinaryDictionary_isValidWord}, + {"getBigramsNative", "(J[II[II[C[III)I", (void*)latinime_BinaryDictionary_getBigrams}, {"calcNormalizedScoreNative", "([CI[CII)D", (void*)latinime_BinaryDictionary_calcNormalizedScore}, {"editDistanceNative", "([CI[CI)I", (void*)latinime_BinaryDictionary_editDistance} |