From ac983b13a9ee97d9a1a0ecd4a12dff5b2e2552e5 Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Wed, 3 Sep 2014 18:33:10 +0900 Subject: [PATCH] Use word id to get shortcut iterator. Bug: 14425059 Change-Id: I1b35a139bd29f70b328cbc82648783b99f633d72 --- .../policy/dictionary_structure_with_buffer_policy.h | 2 +- .../suggest/core/result/suggestions_output_utils.cpp | 2 +- .../backward/v402/ver4_patricia_trie_policy.cpp | 4 ++-- .../backward/v402/ver4_patricia_trie_policy.h | 2 +- .../dictionary/structure/v2/patricia_trie_policy.cpp | 4 ++-- .../dictionary/structure/v2/patricia_trie_policy.h | 2 +- .../structure/v4/ver4_patricia_trie_policy.cpp | 12 +++++++----- .../structure/v4/ver4_patricia_trie_policy.h | 4 ++-- 8 files changed, 17 insertions(+), 15 deletions(-) diff --git a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h index e62543d67..36fa6e854 100644 --- a/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h +++ b/native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h @@ -63,7 +63,7 @@ class DictionaryStructureWithBufferPolicy { virtual void iterateNgramEntries(const int *const prevWordIds, NgramListener *const listener) const = 0; - virtual BinaryDictionaryShortcutIterator getShortcutIterator(const int ptNodePos) const = 0; + virtual BinaryDictionaryShortcutIterator getShortcutIterator(const int wordId) const = 0; virtual const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const = 0; diff --git a/native/jni/src/suggest/core/result/suggestions_output_utils.cpp b/native/jni/src/suggest/core/result/suggestions_output_utils.cpp index bd2aa5f00..ad860c4a4 100644 --- a/native/jni/src/suggest/core/result/suggestions_output_utils.cpp +++ b/native/jni/src/suggest/core/result/suggestions_output_utils.cpp @@ -141,7 +141,7 @@ const int SuggestionsOutputUtils::MIN_LEN_FOR_MULTI_WORD_AUTOCORRECT = 16; if (!terminalDicNode->hasMultipleWords()) { BinaryDictionaryShortcutIterator shortcutIt = traverseSession->getDictionaryStructurePolicy()->getShortcutIterator( - terminalDicNode->getPtNodePos()); + terminalDicNode->getWordId()); const bool sameAsTyped = scoringPolicy->sameAsTyped(traverseSession, terminalDicNode); outputShortcuts(&shortcutIt, finalScore, sameAsTyped, outSuggestionResults); } diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp index eb7d45193..28c5eb105 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.cpp @@ -175,8 +175,8 @@ void Ver4PatriciaTriePolicy::iterateNgramEntries(const int *const prevWordIds, } BinaryDictionaryShortcutIterator Ver4PatriciaTriePolicy::getShortcutIterator( - const int ptNodePos) const { - const int shortcutPos = getShortcutPositionOfPtNode(ptNodePos); + const int wordId) const { + const int shortcutPos = getShortcutPositionOfPtNode(getTerminalPtNodePosFromWordId(wordId)); return BinaryDictionaryShortcutIterator(&mShortcutPolicy, shortcutPos); } diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h index 55b71036e..bead2ff23 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h @@ -97,7 +97,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { void iterateNgramEntries(const int *const prevWordIds, NgramListener *const listener) const; - BinaryDictionaryShortcutIterator getShortcutIterator(const int ptNodePos) const; + BinaryDictionaryShortcutIterator getShortcutIterator(const int wordId) const; const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const { return mHeaderPolicy; diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp index 12196fcbc..88fe3efd3 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp @@ -342,8 +342,8 @@ void PatriciaTriePolicy::iterateNgramEntries(const int *const prevWordIds, } BinaryDictionaryShortcutIterator PatriciaTriePolicy::getShortcutIterator( - const int ptNodePos) const { - const int shortcutPos = getShortcutPositionOfPtNode(ptNodePos); + const int wordId) const { + const int shortcutPos = getShortcutPositionOfPtNode(getTerminalPtNodePosFromWordId(wordId)); return BinaryDictionaryShortcutIterator(&mShortcutListPolicy, shortcutPos); } diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h index 95963bedb..08c3e1ddc 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h @@ -72,7 +72,7 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { void iterateNgramEntries(const int *const prevWordIds, NgramListener *const listener) const; - BinaryDictionaryShortcutIterator getShortcutIterator(const int ptNodePos) const; + BinaryDictionaryShortcutIterator getShortcutIterator(const int wordId) const; const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const { return &mHeaderPolicy; diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp index 04f43f6cc..e11b94cdc 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp @@ -157,8 +157,8 @@ int Ver4PatriciaTriePolicy::getProbabilityOfWord(const int *const prevWordIds, } BinaryDictionaryShortcutIterator Ver4PatriciaTriePolicy::getShortcutIterator( - const int ptNodePos) const { - const int shortcutPos = getShortcutPositionOfPtNode(ptNodePos); + const int wordId) const { + const int shortcutPos = getShortcutPositionOfWord(wordId); return BinaryDictionaryShortcutIterator(&mShortcutPolicy, shortcutPos); } @@ -180,10 +180,12 @@ void Ver4PatriciaTriePolicy::iterateNgramEntries(const int *const prevWordIds, } } -int Ver4PatriciaTriePolicy::getShortcutPositionOfPtNode(const int ptNodePos) const { - if (ptNodePos == NOT_A_DICT_POS) { +int Ver4PatriciaTriePolicy::getShortcutPositionOfWord(const int wordId) const { + if (wordId == NOT_A_WORD_ID) { return NOT_A_DICT_POS; } + const int ptNodePos = + mBuffers->getTerminalPositionLookupTable()->getTerminalPtNodePosition(wordId); const PtNodeParams ptNodeParams(mNodeReader.fetchPtNodeParamsInBufferFromPtNodePos(ptNodePos)); if (ptNodeParams.isDeleted()) { return NOT_A_DICT_POS; @@ -511,7 +513,7 @@ const WordProperty Ver4PatriciaTriePolicy::getWordProperty( } // Fetch shortcut information. std::vector shortcuts; - int shortcutPos = getShortcutPositionOfPtNode(ptNodePos); + int shortcutPos = getShortcutPositionOfWord(wordId); if (shortcutPos != NOT_A_DICT_POS) { int shortcutTarget[MAX_WORD_LENGTH]; const ShortcutDictContent *const shortcutDictContent = diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h index 84357264b..9dc83d8da 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h @@ -74,7 +74,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { void iterateNgramEntries(const int *const prevWordIds, NgramListener *const listener) const; - BinaryDictionaryShortcutIterator getShortcutIterator(const int ptNodePos) const; + BinaryDictionaryShortcutIterator getShortcutIterator(const int wordId) const; const DictionaryHeaderStructurePolicy *getHeaderStructurePolicy() const { return mHeaderPolicy; @@ -135,7 +135,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { std::vector mTerminalPtNodePositionsForIteratingWords; mutable bool mIsCorrupted; - int getShortcutPositionOfPtNode(const int ptNodePos) const; + int getShortcutPositionOfWord(const int wordId) const; }; } // namespace latinime #endif // LATINIME_VER4_PATRICIA_TRIE_POLICY_H