Loading native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h +2 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,8 @@ class DictionaryStructureWithBufferPolicy { // starts iterating the dictionary. virtual int getNextWordAndNextToken(const int token, int *const outCodePoints) = 0; virtual bool isCorrupted() const = 0; protected: DictionaryStructureWithBufferPolicy() {} Loading native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ void PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const dicNo if (nextPos < 0 || nextPos >= mDictBufferSize) { AKLOGE("Children PtNode array position is invalid. pos: %d, dict size: %d", nextPos, mDictBufferSize); mIsCorrupted = true; ASSERT(false); return; } Loading @@ -45,6 +46,7 @@ void PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const dicNo if (nextPos < 0 || nextPos >= mDictBufferSize) { AKLOGE("Child PtNode position is invalid. pos: %d, dict size: %d, childCount: %d / %d", nextPos, mDictBufferSize, i, childCount); mIsCorrupted = true; ASSERT(false); return; } Loading Loading @@ -239,7 +241,13 @@ int PatriciaTriePolicy::getTerminalPtNodePositionOfWord(const int *const inWord, const int length, const bool forceLowerCaseSearch) const { DynamicPtReadingHelper readingHelper(&mPtNodeReader, &mPtNodeArrayReader); readingHelper.initWithPtNodeArrayPos(getRootPosition()); return readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch); const int ptNodePos = readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch); if (readingHelper.isError()) { mIsCorrupted = true; AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes()."); } return ptNodePos; } int PatriciaTriePolicy::getProbability(const int unigramProbability, Loading native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h +6 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { mBigramListPolicy(mDictRoot), mShortcutListPolicy(mDictRoot), mPtNodeReader(mDictRoot, mDictBufferSize, &mBigramListPolicy, &mShortcutListPolicy), mPtNodeArrayReader(mDictRoot, mDictBufferSize), mTerminalPtNodePositionsForIteratingWords() {} mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {} AK_FORCE_INLINE int getRootPosition() const { return 0; Loading Loading @@ -134,6 +134,10 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { int getNextWordAndNextToken(const int token, int *const outCodePoints); bool isCorrupted() const { return mIsCorrupted; } private: DISALLOW_IMPLICIT_CONSTRUCTORS(PatriciaTriePolicy); Loading @@ -146,6 +150,7 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { const Ver2ParticiaTrieNodeReader mPtNodeReader; const Ver2PtNodeArrayReader mPtNodeArrayReader; std::vector<int> mTerminalPtNodePositionsForIteratingWords; mutable bool mIsCorrupted; int createAndGetLeavingChildNode(const DicNode *const dicNode, const int ptNodePos, DicNodeVector *const childDicNodes) const; Loading native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +25 −4 Original line number Diff line number Diff line Loading @@ -65,6 +65,10 @@ void Ver4PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const d ptNodeParams.getCodePointCount(), ptNodeParams.getCodePoints()); readingHelper.readNextSiblingNode(ptNodeParams); } if (readingHelper.isError()) { mIsCorrupted = true; AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes()."); } } int Ver4PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount( Loading @@ -72,15 +76,26 @@ int Ver4PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount( int *const outUnigramProbability) const { DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader); readingHelper.initWithPtNodePos(ptNodePos); return readingHelper.getCodePointsAndProbabilityAndReturnCodePointCount( const int codePointCount = readingHelper.getCodePointsAndProbabilityAndReturnCodePointCount( maxCodePointCount, outCodePoints, outUnigramProbability); if (readingHelper.isError()) { mIsCorrupted = true; AKLOGE("Dictionary reading error in getCodePointsAndProbabilityAndReturnCodePointCount()."); } return codePointCount; } int Ver4PatriciaTriePolicy::getTerminalPtNodePositionOfWord(const int *const inWord, const int length, const bool forceLowerCaseSearch) const { DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader); readingHelper.initWithPtNodeArrayPos(getRootPosition()); return readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch); const int ptNodePos = readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch); if (readingHelper.isError()) { mIsCorrupted = true; AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes()."); } return ptNodePos; } int Ver4PatriciaTriePolicy::getProbability(const int unigramProbability, Loading Loading @@ -265,7 +280,10 @@ void Ver4PatriciaTriePolicy::flush(const char *const filePath) { AKLOGI("Warning: flush() is called for non-updatable dictionary. filePath: %s", filePath); return; } mWritingHelper.writeToDictFile(filePath, mUnigramCount, mBigramCount); if (!mWritingHelper.writeToDictFile(filePath, mUnigramCount, mBigramCount)) { AKLOGE("Cannot flush the dictionary to file."); mIsCorrupted = true; } } void Ver4PatriciaTriePolicy::flushWithGC(const char *const filePath) { Loading @@ -273,7 +291,10 @@ void Ver4PatriciaTriePolicy::flushWithGC(const char *const filePath) { AKLOGI("Warning: flushWithGC() is called for non-updatable dictionary."); return; } mWritingHelper.writeToDictFileWithGC(getRootPosition(), filePath); if (!mWritingHelper.writeToDictFileWithGC(getRootPosition(), filePath)) { AKLOGE("Cannot flush the dictionary to file with GC."); mIsCorrupted = true; } } bool Ver4PatriciaTriePolicy::needsToRunGC(const bool mindsBlockByGC) const { Loading native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h +6 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { mWritingHelper(mBuffers.get()), mUnigramCount(mHeaderPolicy->getUnigramCount()), mBigramCount(mHeaderPolicy->getBigramCount()), mTerminalPtNodePositionsForIteratingWords() {}; mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {}; AK_FORCE_INLINE int getRootPosition() const { return 0; Loading Loading @@ -116,6 +116,10 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { int getNextWordAndNextToken(const int token, int *const outCodePoints); bool isCorrupted() const { return mIsCorrupted; } private: DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTriePolicy); Loading @@ -141,6 +145,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { int mUnigramCount; int mBigramCount; std::vector<int> mTerminalPtNodePositionsForIteratingWords; mutable bool mIsCorrupted; }; } // namespace latinime #endif // LATINIME_VER4_PATRICIA_TRIE_POLICY_H Loading
native/jni/src/suggest/core/policy/dictionary_structure_with_buffer_policy.h +2 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,8 @@ class DictionaryStructureWithBufferPolicy { // starts iterating the dictionary. virtual int getNextWordAndNextToken(const int token, int *const outCodePoints) = 0; virtual bool isCorrupted() const = 0; protected: DictionaryStructureWithBufferPolicy() {} Loading
native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ void PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const dicNo if (nextPos < 0 || nextPos >= mDictBufferSize) { AKLOGE("Children PtNode array position is invalid. pos: %d, dict size: %d", nextPos, mDictBufferSize); mIsCorrupted = true; ASSERT(false); return; } Loading @@ -45,6 +46,7 @@ void PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const dicNo if (nextPos < 0 || nextPos >= mDictBufferSize) { AKLOGE("Child PtNode position is invalid. pos: %d, dict size: %d, childCount: %d / %d", nextPos, mDictBufferSize, i, childCount); mIsCorrupted = true; ASSERT(false); return; } Loading Loading @@ -239,7 +241,13 @@ int PatriciaTriePolicy::getTerminalPtNodePositionOfWord(const int *const inWord, const int length, const bool forceLowerCaseSearch) const { DynamicPtReadingHelper readingHelper(&mPtNodeReader, &mPtNodeArrayReader); readingHelper.initWithPtNodeArrayPos(getRootPosition()); return readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch); const int ptNodePos = readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch); if (readingHelper.isError()) { mIsCorrupted = true; AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes()."); } return ptNodePos; } int PatriciaTriePolicy::getProbability(const int unigramProbability, Loading
native/jni/src/suggest/policyimpl/dictionary/structure/v2/patricia_trie_policy.h +6 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { mBigramListPolicy(mDictRoot), mShortcutListPolicy(mDictRoot), mPtNodeReader(mDictRoot, mDictBufferSize, &mBigramListPolicy, &mShortcutListPolicy), mPtNodeArrayReader(mDictRoot, mDictBufferSize), mTerminalPtNodePositionsForIteratingWords() {} mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {} AK_FORCE_INLINE int getRootPosition() const { return 0; Loading Loading @@ -134,6 +134,10 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { int getNextWordAndNextToken(const int token, int *const outCodePoints); bool isCorrupted() const { return mIsCorrupted; } private: DISALLOW_IMPLICIT_CONSTRUCTORS(PatriciaTriePolicy); Loading @@ -146,6 +150,7 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { const Ver2ParticiaTrieNodeReader mPtNodeReader; const Ver2PtNodeArrayReader mPtNodeArrayReader; std::vector<int> mTerminalPtNodePositionsForIteratingWords; mutable bool mIsCorrupted; int createAndGetLeavingChildNode(const DicNode *const dicNode, const int ptNodePos, DicNodeVector *const childDicNodes) const; Loading
native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp +25 −4 Original line number Diff line number Diff line Loading @@ -65,6 +65,10 @@ void Ver4PatriciaTriePolicy::createAndGetAllChildDicNodes(const DicNode *const d ptNodeParams.getCodePointCount(), ptNodeParams.getCodePoints()); readingHelper.readNextSiblingNode(ptNodeParams); } if (readingHelper.isError()) { mIsCorrupted = true; AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes()."); } } int Ver4PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount( Loading @@ -72,15 +76,26 @@ int Ver4PatriciaTriePolicy::getCodePointsAndProbabilityAndReturnCodePointCount( int *const outUnigramProbability) const { DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader); readingHelper.initWithPtNodePos(ptNodePos); return readingHelper.getCodePointsAndProbabilityAndReturnCodePointCount( const int codePointCount = readingHelper.getCodePointsAndProbabilityAndReturnCodePointCount( maxCodePointCount, outCodePoints, outUnigramProbability); if (readingHelper.isError()) { mIsCorrupted = true; AKLOGE("Dictionary reading error in getCodePointsAndProbabilityAndReturnCodePointCount()."); } return codePointCount; } int Ver4PatriciaTriePolicy::getTerminalPtNodePositionOfWord(const int *const inWord, const int length, const bool forceLowerCaseSearch) const { DynamicPtReadingHelper readingHelper(&mNodeReader, &mPtNodeArrayReader); readingHelper.initWithPtNodeArrayPos(getRootPosition()); return readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch); const int ptNodePos = readingHelper.getTerminalPtNodePositionOfWord(inWord, length, forceLowerCaseSearch); if (readingHelper.isError()) { mIsCorrupted = true; AKLOGE("Dictionary reading error in createAndGetAllChildDicNodes()."); } return ptNodePos; } int Ver4PatriciaTriePolicy::getProbability(const int unigramProbability, Loading Loading @@ -265,7 +280,10 @@ void Ver4PatriciaTriePolicy::flush(const char *const filePath) { AKLOGI("Warning: flush() is called for non-updatable dictionary. filePath: %s", filePath); return; } mWritingHelper.writeToDictFile(filePath, mUnigramCount, mBigramCount); if (!mWritingHelper.writeToDictFile(filePath, mUnigramCount, mBigramCount)) { AKLOGE("Cannot flush the dictionary to file."); mIsCorrupted = true; } } void Ver4PatriciaTriePolicy::flushWithGC(const char *const filePath) { Loading @@ -273,7 +291,10 @@ void Ver4PatriciaTriePolicy::flushWithGC(const char *const filePath) { AKLOGI("Warning: flushWithGC() is called for non-updatable dictionary."); return; } mWritingHelper.writeToDictFileWithGC(getRootPosition(), filePath); if (!mWritingHelper.writeToDictFileWithGC(getRootPosition(), filePath)) { AKLOGE("Cannot flush the dictionary to file with GC."); mIsCorrupted = true; } } bool Ver4PatriciaTriePolicy::needsToRunGC(const bool mindsBlockByGC) const { Loading
native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h +6 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { mWritingHelper(mBuffers.get()), mUnigramCount(mHeaderPolicy->getUnigramCount()), mBigramCount(mHeaderPolicy->getBigramCount()), mTerminalPtNodePositionsForIteratingWords() {}; mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {}; AK_FORCE_INLINE int getRootPosition() const { return 0; Loading Loading @@ -116,6 +116,10 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { int getNextWordAndNextToken(const int token, int *const outCodePoints); bool isCorrupted() const { return mIsCorrupted; } private: DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTriePolicy); Loading @@ -141,6 +145,7 @@ class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy { int mUnigramCount; int mBigramCount; std::vector<int> mTerminalPtNodePositionsForIteratingWords; mutable bool mIsCorrupted; }; } // namespace latinime #endif // LATINIME_VER4_PATRICIA_TRIE_POLICY_H