aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-04-24 18:06:51 +0900
committerJean Chalard <jchalard@google.com>2012-04-26 15:24:42 +0900
commit351864b38a2a19a3b591efe3ed58a5998bb4c79d (patch)
treeb9ec07ca658c6bcf73eaa4c193451dec35b61776 /native/jni/src
parent49caddbdabe5ca666bdef9f842f134e30e7ffed9 (diff)
downloadlatinime-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.cpp9
-rw-r--r--native/jni/src/bigram_dictionary.h3
-rw-r--r--native/jni/src/dictionary.h8
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);