aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--native/src/bigram_dictionary.cpp2
-rw-r--r--native/src/dictionary.cpp8
-rw-r--r--native/src/dictionary.h3
-rw-r--r--native/src/unigram_dictionary.cpp9
-rw-r--r--native/src/unigram_dictionary.h2
5 files changed, 18 insertions, 6 deletions
diff --git a/native/src/bigram_dictionary.cpp b/native/src/bigram_dictionary.cpp
index 4bc436537..11e6dc250 100644
--- a/native/src/bigram_dictionary.cpp
+++ b/native/src/bigram_dictionary.cpp
@@ -111,7 +111,7 @@ int BigramDictionary::getBigrams(unsigned short *prevWord, int prevWordLength, i
mMaxBigrams = maxBigrams;
if (HAS_BIGRAM && IS_LATEST_DICT_VERSION) {
- int pos = mParentDictionary->isValidWord(prevWord, prevWordLength);
+ int pos = mParentDictionary->getBigramPosition(prevWord, prevWordLength);
if (DEBUG_DICT) {
LOGI("Pos -> %d", pos);
}
diff --git a/native/src/dictionary.cpp b/native/src/dictionary.cpp
index a49769bdb..9e32ee80f 100644
--- a/native/src/dictionary.cpp
+++ b/native/src/dictionary.cpp
@@ -57,4 +57,12 @@ bool Dictionary::isValidWord(unsigned short *word, int length) {
return mUnigramDictionary->isValidWord(word, length);
}
+int Dictionary::getBigramPosition(unsigned short *word, int length) {
+ if (IS_LATEST_DICT_VERSION) {
+ return mUnigramDictionary->getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length);
+ } else {
+ return mUnigramDictionary->getBigramPosition(0, word, 0, length);
+ }
+}
+
} // namespace latinime
diff --git a/native/src/dictionary.h b/native/src/dictionary.h
index 3b360d93a..1b41f69dd 100644
--- a/native/src/dictionary.h
+++ b/native/src/dictionary.h
@@ -62,6 +62,9 @@ public:
const int pos, unsigned short *c, int *childrenPosition,
bool *terminal, int *freq);
+ // TODO: delete this
+ int getBigramPosition(unsigned short *word, int length);
+
private:
bool hasBigram();
diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp
index 7bcdbb498..c294cf3b5 100644
--- a/native/src/unigram_dictionary.cpp
+++ b/native/src/unigram_dictionary.cpp
@@ -932,15 +932,16 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh
// TODO: use uint32_t instead of unsigned short
bool UnigramDictionary::isValidWord(unsigned short *word, int length) {
if (IS_LATEST_DICT_VERSION) {
- return (getFrequency(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
+ return (getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD);
} else {
- return (getFrequency(0, word, 0, length) != NOT_VALID_WORD);
+ return (getBigramPosition(0, word, 0, length) != NOT_VALID_WORD);
}
}
// Require strict exact match.
-int UnigramDictionary::getFrequency(int pos, unsigned short *word, int offset, int length) const {
+int UnigramDictionary::getBigramPosition(int pos, unsigned short *word, int offset,
+ int length) const {
// returns address of bigram data of that word
// return -99 if not found
@@ -957,7 +958,7 @@ int UnigramDictionary::getFrequency(int pos, unsigned short *word, int offset, i
}
} else {
if (childPos != 0) {
- int t = getFrequency(childPos, word, offset + 1, length);
+ int t = getBigramPosition(childPos, word, offset + 1, length);
if (t > 0) {
return t;
}
diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h
index b8e4914fa..c47db1ad2 100644
--- a/native/src/unigram_dictionary.h
+++ b/native/src/unigram_dictionary.h
@@ -40,6 +40,7 @@ public:
int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars,
const bool isLatestDictVersion);
bool isValidWord(unsigned short *word, int length);
+ int getBigramPosition(int pos, unsigned short *word, int offset, int length) const;
int getSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates,
const int *ycoordinates, const int *codes, const int codesSize, const int flags,
unsigned short *outWords, int *frequencies);
@@ -59,7 +60,6 @@ private:
void getSuggestionCandidates(const int skipPos, const int excessivePos,
const int transposedPos, int *nextLetters, const int nextLettersSize,
const int maxDepth);
- int getFrequency(int pos, unsigned short *word, int offset, int length) const;
void getVersionNumber();
bool checkIfDictVersionIsLatest();
int getAddress(int *pos);