Loading native/jni/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ LATIN_IME_CORE_SRC_FILES := \ suggest/core/policy/weighting.cpp \ suggest/core/session/dic_traverse_session.cpp \ $(addprefix suggest/policyimpl/dictionary/, \ bigram/bigram_list_reading_utils.cpp \ dictionary_structure_with_buffer_policy_factory.cpp \ dynamic_patricia_trie_node_reader.cpp \ dynamic_patricia_trie_policy.cpp \ Loading native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.cpp +0 −23 Original line number Diff line number Diff line Loading @@ -36,27 +36,4 @@ const int TaUtils::SHORTCUT_LIST_SIZE_FIELD_SIZE = 2; // The numeric value of the shortcut probability that means 'whitelist'. const int TaUtils::WHITELIST_SHORTCUT_PROBABILITY = 15; /* static */ int TaUtils::getBigramAddressAndForwardPointer( const uint8_t *const dictRoot, const TerminalAttributeFlags flags, int *const pos) { int offset = 0; const int origin = *pos; switch (MASK_ATTRIBUTE_ADDRESS_TYPE & flags) { case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE: offset = ByteArrayUtils::readUint8AndAdvancePosition(dictRoot, pos); break; case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES: offset = ByteArrayUtils::readUint16AndAdvancePosition(dictRoot, pos); break; case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES: offset = ByteArrayUtils::readUint24AndAdvancePosition(dictRoot, pos); break; } if (isOffsetNegative(flags)) { return origin - offset; } else { return origin + offset; } } } // namespace latinime native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h +0 −15 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ namespace latinime { class BinaryDictionaryTerminalAttributesReadingUtils { public: typedef uint8_t TerminalAttributeFlags; typedef TerminalAttributeFlags BigramFlags; typedef TerminalAttributeFlags ShortcutFlags; static AK_FORCE_INLINE TerminalAttributeFlags getFlagsAndForwardPointer( Loading @@ -44,20 +43,6 @@ class BinaryDictionaryTerminalAttributesReadingUtils { return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0; } // Bigrams reading methods static AK_FORCE_INLINE void skipExistingBigrams( const uint8_t *const dictRoot, int *const pos) { BigramFlags flags = getFlagsAndForwardPointer(dictRoot, pos); while (hasNext(flags)) { *pos += attributeAddressSize(flags); flags = getFlagsAndForwardPointer(dictRoot, pos); } *pos += attributeAddressSize(flags); } static int getBigramAddressAndForwardPointer( const uint8_t *const dictRoot, const BigramFlags flags, int *const pos); // Shortcuts reading methods // This method returns the size of the shortcut list region excluding the shortcut list size // field at the beginning. Loading native/jni/src/suggest/policyimpl/dictionary/bigrams/bigram_list_policy.h→native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_policy.h +7 −11 Original line number Diff line number Diff line Loading @@ -21,8 +21,7 @@ #include "defines.h" #include "suggest/core/policy/dictionary_bigrams_structure_policy.h" // TODO: Move bigrams reading methods to policyimpl. #include "suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h" #include "suggest/policyimpl/dictionary/bigram/bigram_list_reading_utils.h" namespace latinime { Loading @@ -34,19 +33,16 @@ class BigramListPolicy : public DictionaryBigramsStructurePolicy { void getNextBigram(int *const outBigramPos, int *const outProbability, bool *const outHasNext, int *const pos) const { const BinaryDictionaryTerminalAttributesReadingUtils::BigramFlags flags = BinaryDictionaryTerminalAttributesReadingUtils::getFlagsAndForwardPointer( mBigramsBuf, pos); *outBigramPos = BinaryDictionaryTerminalAttributesReadingUtils::getBigramAddressAndForwardPointer( const BigramListReadingUtils::BigramFlags flags = BigramListReadingUtils::getFlagsAndForwardPointer(mBigramsBuf, pos); *outBigramPos = BigramListReadingUtils::getBigramAddressAndForwardPointer( mBigramsBuf, flags, pos); *outProbability = BinaryDictionaryTerminalAttributesReadingUtils::getProbabilityFromFlags(flags); *outHasNext = BinaryDictionaryTerminalAttributesReadingUtils::hasNext(flags); *outProbability = BigramListReadingUtils::getProbabilityFromFlags(flags); *outHasNext = BigramListReadingUtils::hasNext(flags); } void skipAllBigrams(int *const pos) const { BinaryDictionaryTerminalAttributesReadingUtils::skipExistingBigrams(mBigramsBuf, pos); BigramListReadingUtils::skipExistingBigrams(mBigramsBuf, pos); } private: Loading native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_reading_utils.cpp 0 → 100644 +62 −0 Original line number Diff line number Diff line /* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "suggest/policyimpl/dictionary/bigram/bigram_list_reading_utils.h" #include "suggest/core/dictionary/byte_array_utils.h" namespace latinime { const BigramListReadingUtils::BigramFlags BigramListReadingUtils::MASK_ATTRIBUTE_ADDRESS_TYPE = 0x30; const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE = 0x10; const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES = 0x20; const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES = 0x30; const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_OFFSET_NEGATIVE = 0x40; // Flag for presence of more attributes const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80; // Mask for attribute probability, stored on 4 bits inside the flags byte. const BigramListReadingUtils::BigramFlags BigramListReadingUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F; const int BigramListReadingUtils::ATTRIBUTE_ADDRESS_SHIFT = 4; /* static */ int BigramListReadingUtils::getBigramAddressAndForwardPointer( const uint8_t *const bigramsBuf, const BigramFlags flags, int *const pos) { int offset = 0; const int origin = *pos; switch (MASK_ATTRIBUTE_ADDRESS_TYPE & flags) { case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE: offset = ByteArrayUtils::readUint8AndAdvancePosition(bigramsBuf, pos); break; case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES: offset = ByteArrayUtils::readUint16AndAdvancePosition(bigramsBuf, pos); break; case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES: offset = ByteArrayUtils::readUint24AndAdvancePosition(bigramsBuf, pos); break; } if (isOffsetNegative(flags)) { return origin - offset; } else { return origin + offset; } } } // namespace latinime Loading
native/jni/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ LATIN_IME_CORE_SRC_FILES := \ suggest/core/policy/weighting.cpp \ suggest/core/session/dic_traverse_session.cpp \ $(addprefix suggest/policyimpl/dictionary/, \ bigram/bigram_list_reading_utils.cpp \ dictionary_structure_with_buffer_policy_factory.cpp \ dynamic_patricia_trie_node_reader.cpp \ dynamic_patricia_trie_policy.cpp \ Loading
native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.cpp +0 −23 Original line number Diff line number Diff line Loading @@ -36,27 +36,4 @@ const int TaUtils::SHORTCUT_LIST_SIZE_FIELD_SIZE = 2; // The numeric value of the shortcut probability that means 'whitelist'. const int TaUtils::WHITELIST_SHORTCUT_PROBABILITY = 15; /* static */ int TaUtils::getBigramAddressAndForwardPointer( const uint8_t *const dictRoot, const TerminalAttributeFlags flags, int *const pos) { int offset = 0; const int origin = *pos; switch (MASK_ATTRIBUTE_ADDRESS_TYPE & flags) { case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE: offset = ByteArrayUtils::readUint8AndAdvancePosition(dictRoot, pos); break; case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES: offset = ByteArrayUtils::readUint16AndAdvancePosition(dictRoot, pos); break; case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES: offset = ByteArrayUtils::readUint24AndAdvancePosition(dictRoot, pos); break; } if (isOffsetNegative(flags)) { return origin - offset; } else { return origin + offset; } } } // namespace latinime
native/jni/src/suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h +0 −15 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ namespace latinime { class BinaryDictionaryTerminalAttributesReadingUtils { public: typedef uint8_t TerminalAttributeFlags; typedef TerminalAttributeFlags BigramFlags; typedef TerminalAttributeFlags ShortcutFlags; static AK_FORCE_INLINE TerminalAttributeFlags getFlagsAndForwardPointer( Loading @@ -44,20 +43,6 @@ class BinaryDictionaryTerminalAttributesReadingUtils { return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0; } // Bigrams reading methods static AK_FORCE_INLINE void skipExistingBigrams( const uint8_t *const dictRoot, int *const pos) { BigramFlags flags = getFlagsAndForwardPointer(dictRoot, pos); while (hasNext(flags)) { *pos += attributeAddressSize(flags); flags = getFlagsAndForwardPointer(dictRoot, pos); } *pos += attributeAddressSize(flags); } static int getBigramAddressAndForwardPointer( const uint8_t *const dictRoot, const BigramFlags flags, int *const pos); // Shortcuts reading methods // This method returns the size of the shortcut list region excluding the shortcut list size // field at the beginning. Loading
native/jni/src/suggest/policyimpl/dictionary/bigrams/bigram_list_policy.h→native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_policy.h +7 −11 Original line number Diff line number Diff line Loading @@ -21,8 +21,7 @@ #include "defines.h" #include "suggest/core/policy/dictionary_bigrams_structure_policy.h" // TODO: Move bigrams reading methods to policyimpl. #include "suggest/core/dictionary/binary_dictionary_terminal_attributes_reading_utils.h" #include "suggest/policyimpl/dictionary/bigram/bigram_list_reading_utils.h" namespace latinime { Loading @@ -34,19 +33,16 @@ class BigramListPolicy : public DictionaryBigramsStructurePolicy { void getNextBigram(int *const outBigramPos, int *const outProbability, bool *const outHasNext, int *const pos) const { const BinaryDictionaryTerminalAttributesReadingUtils::BigramFlags flags = BinaryDictionaryTerminalAttributesReadingUtils::getFlagsAndForwardPointer( mBigramsBuf, pos); *outBigramPos = BinaryDictionaryTerminalAttributesReadingUtils::getBigramAddressAndForwardPointer( const BigramListReadingUtils::BigramFlags flags = BigramListReadingUtils::getFlagsAndForwardPointer(mBigramsBuf, pos); *outBigramPos = BigramListReadingUtils::getBigramAddressAndForwardPointer( mBigramsBuf, flags, pos); *outProbability = BinaryDictionaryTerminalAttributesReadingUtils::getProbabilityFromFlags(flags); *outHasNext = BinaryDictionaryTerminalAttributesReadingUtils::hasNext(flags); *outProbability = BigramListReadingUtils::getProbabilityFromFlags(flags); *outHasNext = BigramListReadingUtils::hasNext(flags); } void skipAllBigrams(int *const pos) const { BinaryDictionaryTerminalAttributesReadingUtils::skipExistingBigrams(mBigramsBuf, pos); BigramListReadingUtils::skipExistingBigrams(mBigramsBuf, pos); } private: Loading
native/jni/src/suggest/policyimpl/dictionary/bigram/bigram_list_reading_utils.cpp 0 → 100644 +62 −0 Original line number Diff line number Diff line /* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "suggest/policyimpl/dictionary/bigram/bigram_list_reading_utils.h" #include "suggest/core/dictionary/byte_array_utils.h" namespace latinime { const BigramListReadingUtils::BigramFlags BigramListReadingUtils::MASK_ATTRIBUTE_ADDRESS_TYPE = 0x30; const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE = 0x10; const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES = 0x20; const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES = 0x30; const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_OFFSET_NEGATIVE = 0x40; // Flag for presence of more attributes const BigramListReadingUtils::BigramFlags BigramListReadingUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80; // Mask for attribute probability, stored on 4 bits inside the flags byte. const BigramListReadingUtils::BigramFlags BigramListReadingUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F; const int BigramListReadingUtils::ATTRIBUTE_ADDRESS_SHIFT = 4; /* static */ int BigramListReadingUtils::getBigramAddressAndForwardPointer( const uint8_t *const bigramsBuf, const BigramFlags flags, int *const pos) { int offset = 0; const int origin = *pos; switch (MASK_ATTRIBUTE_ADDRESS_TYPE & flags) { case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE: offset = ByteArrayUtils::readUint8AndAdvancePosition(bigramsBuf, pos); break; case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES: offset = ByteArrayUtils::readUint16AndAdvancePosition(bigramsBuf, pos); break; case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES: offset = ByteArrayUtils::readUint24AndAdvancePosition(bigramsBuf, pos); break; } if (isOffsetNegative(flags)) { return origin - offset; } else { return origin + offset; } } } // namespace latinime