diff options
author | 2012-04-24 18:06:51 +0900 | |
---|---|---|
committer | 2012-04-26 15:24:42 +0900 | |
commit | 351864b38a2a19a3b591efe3ed58a5998bb4c79d (patch) | |
tree | b9ec07ca658c6bcf73eaa4c193451dec35b61776 /native/jni/src | |
parent | 49caddbdabe5ca666bdef9f842f134e30e7ffed9 (diff) | |
download | latinime-351864b38a2a19a3b591efe3ed58a5998bb4c79d.tar.gz latinime-351864b38a2a19a3b591efe3ed58a5998bb4c79d.tar.xz latinime-351864b38a2a19a3b591efe3ed58a5998bb4c79d.zip |
Fetch and pass the bigram position on suggestions.
This is a cherry-pick of change I2d81742f
Bug: 6313806
Change-Id: Ic1190b7980d032bc11b57841bca040d980889b6b
Diffstat (limited to 'native/jni/src')
-rw-r--r-- | native/jni/src/bigram_dictionary.cpp | 9 | ||||
-rw-r--r-- | native/jni/src/bigram_dictionary.h | 3 | ||||
-rw-r--r-- | native/jni/src/dictionary.h | 8 |
3 files changed, 10 insertions, 10 deletions
diff --git a/native/jni/src/bigram_dictionary.cpp b/native/jni/src/bigram_dictionary.cpp index 927381fdb..e05e9d688 100644 --- a/native/jni/src/bigram_dictionary.cpp +++ b/native/jni/src/bigram_dictionary.cpp @@ -107,8 +107,8 @@ int BigramDictionary::getBigrams(const int32_t *prevWord, int prevWordLength, in mMaxBigrams = maxBigrams; const uint8_t* const root = DICT; - int pos = getBigramListForWord(root, prevWord, prevWordLength); - // getBigramListForWord returns 0 if this word is not in the dictionary or has no bigrams + int pos = getBigramListPositionForWord(prevWord, prevWordLength); + // getBigramListPositionForWord returns 0 if this word isn't in the dictionary or has no bigrams if (0 == pos) return 0; int bigramFlags; int bigramCount = 0; @@ -133,8 +133,9 @@ int BigramDictionary::getBigrams(const int32_t *prevWord, int prevWordLength, in // Returns a pointer to the start of the bigram list. // If the word is not found or has no bigrams, this function returns 0. -int BigramDictionary::getBigramListForWord(const uint8_t* const root, - const int32_t *prevWord, const int prevWordLength) { +int BigramDictionary::getBigramListPositionForWord(const int32_t *prevWord, + const int prevWordLength) { + const uint8_t* const root = DICT; int pos = BinaryFormat::getTerminalPosition(root, prevWord, prevWordLength); if (NOT_VALID_WORD == pos) return 0; diff --git a/native/jni/src/bigram_dictionary.h b/native/jni/src/bigram_dictionary.h index 07e47f059..76f903958 100644 --- a/native/jni/src/bigram_dictionary.h +++ b/native/jni/src/bigram_dictionary.h @@ -27,8 +27,7 @@ class BigramDictionary { BigramDictionary(const unsigned char *dict, int maxWordLength, Dictionary *parentDictionary); int getBigrams(const int32_t *word, int length, int *codes, int codesSize, unsigned short *outWords, int *frequencies, int maxWordLength, int maxBigrams); - int getBigramListForWord(const uint8_t* const root, - const int32_t *prevWord, const int prevWordLength); + int getBigramListPositionForWord(const int32_t *prevWord, const int prevWordLength); ~BigramDictionary(); private: bool addWordBigram(unsigned short *word, int length, int frequency); diff --git a/native/jni/src/dictionary.h b/native/jni/src/dictionary.h index 5b9ddb3e9..e0feeafda 100644 --- a/native/jni/src/dictionary.h +++ b/native/jni/src/dictionary.h @@ -33,12 +33,12 @@ class Dictionary { int fullWordMultiplier, int maxWordLength, int maxWords); int getSuggestions(ProximityInfo *proximityInfo, int *xcoordinates, int *ycoordinates, - int *codes, int codesSize, bool useFullEditDistance, unsigned short *outWords, - int *frequencies) { + int *codes, int codesSize, const int32_t* prevWordChars, const int prevWordLength, + bool useFullEditDistance, unsigned short *outWords, int *frequencies) { // bigramListPosition is, as an int, the offset of the bigram list in the file. // If none, it's zero. - // TODO: get this from the bigram dictionary instance - const int bigramListPosition = 0; + const int bigramListPosition = !prevWordChars ? 0 + : mBigramDictionary->getBigramListPositionForWord(prevWordChars, prevWordLength); return mUnigramDictionary->getSuggestions(proximityInfo, mWordsPriorityQueuePool, mCorrection, xcoordinates, ycoordinates, codes, codesSize, bigramListPosition, useFullEditDistance, outWords, frequencies); |