Loading native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h +8 −12 Original line number Diff line number Diff line Loading @@ -34,33 +34,29 @@ class ShortcutListPolicy : public DictionaryShortcutsStructurePolicy { int getStartPos(const int pos) const { int listPos = pos; BinaryDictionaryTerminalAttributesReadingUtils::getShortcutListSizeAndForwardPointer( mShortcutsBuf, &listPos); ShortcutListReadingUtils::getShortcutListSizeAndForwardPointer(mShortcutsBuf, &listPos); return listPos; } void getNextShortcut(const int maxCodePointCount, int *const outCodePoint, int *const outCodePointCount, bool *const outIsWhitelist, bool *const outHasNext, int *const pos) const { const BinaryDictionaryTerminalAttributesReadingUtils::ShortcutFlags flags = BinaryDictionaryTerminalAttributesReadingUtils::getFlagsAndForwardPointer( mShortcutsBuf, pos); const ShortcutListReadingUtils::ShortcutFlags flags = ShortcutListReadingUtils::getFlagsAndForwardPointer(mShortcutsBuf, pos); if (outHasNext) { *outHasNext = BinaryDictionaryTerminalAttributesReadingUtils::hasNext(flags); *outHasNext = ShortcutListReadingUtils::hasNext(flags); } if (outIsWhitelist) { *outIsWhitelist = BinaryDictionaryTerminalAttributesReadingUtils::isWhitelist(flags); *outIsWhitelist = ShortcutListReadingUtils::isWhitelist(flags); } if (outCodePoint) { *outCodePointCount = BinaryDictionaryTerminalAttributesReadingUtils::readShortcutTarget( *outCodePointCount = ShortcutListReadingUtils::readShortcutTarget( mShortcutsBuf, maxCodePointCount, outCodePoint, pos); } } void skipAllShortcuts(int *const pos) const { const int shortcutListSize = BinaryDictionaryTerminalAttributesReadingUtils const int shortcutListSize = ShortcutListReadingUtils ::getShortcutListSizeAndForwardPointer(mShortcutsBuf, pos); *pos += shortcutListSize; } Loading native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.cpp +6 −14 Original line number Diff line number Diff line Loading @@ -16,24 +16,16 @@ #include "suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h" #include "suggest/core/dictionary/byte_array_utils.h" namespace latinime { typedef BinaryDictionaryTerminalAttributesReadingUtils TaUtils; const TaUtils::TerminalAttributeFlags TaUtils::MASK_ATTRIBUTE_ADDRESS_TYPE = 0x30; const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE = 0x10; const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES = 0x20; const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES = 0x30; const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_OFFSET_NEGATIVE = 0x40; // Flag for presence of more attributes const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80; const ShortcutListReadingUtils::ShortcutFlags ShortcutListReadingUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80; // Mask for attribute probability, stored on 4 bits inside the flags byte. const TaUtils::TerminalAttributeFlags TaUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F; const int TaUtils::ATTRIBUTE_ADDRESS_SHIFT = 4; const int TaUtils::SHORTCUT_LIST_SIZE_FIELD_SIZE = 2; const ShortcutListReadingUtils::ShortcutFlags ShortcutListReadingUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F; const int ShortcutListReadingUtils::SHORTCUT_LIST_SIZE_FIELD_SIZE = 2; // The numeric value of the shortcut probability that means 'whitelist'. const int TaUtils::WHITELIST_SHORTCUT_PROBABILITY = 15; const int ShortcutListReadingUtils::WHITELIST_SHORTCUT_PROBABILITY = 15; } // namespace latinime native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h +12 −37 Original line number Diff line number Diff line Loading @@ -14,8 +14,8 @@ * limitations under the License. */ #ifndef LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H #define LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H #ifndef LATINIME_SHORTCUT_LIST_READING_UTILS_H #define LATINIME_SHORTCUT_LIST_READING_UTILS_H #include <stdint.h> Loading @@ -24,25 +24,23 @@ namespace latinime { class BinaryDictionaryTerminalAttributesReadingUtils { class ShortcutListReadingUtils { public: typedef uint8_t TerminalAttributeFlags; typedef TerminalAttributeFlags ShortcutFlags; typedef uint8_t ShortcutFlags; static AK_FORCE_INLINE TerminalAttributeFlags getFlagsAndForwardPointer( static AK_FORCE_INLINE ShortcutFlags getFlagsAndForwardPointer( const uint8_t *const dictRoot, int *const pos) { return ByteArrayUtils::readUint8AndAdvancePosition(dictRoot, pos); } static AK_FORCE_INLINE int getProbabilityFromFlags(const TerminalAttributeFlags flags) { static AK_FORCE_INLINE int getProbabilityFromFlags(const ShortcutFlags flags) { return flags & MASK_ATTRIBUTE_PROBABILITY; } static AK_FORCE_INLINE bool hasNext(const TerminalAttributeFlags flags) { static AK_FORCE_INLINE bool hasNext(const ShortcutFlags flags) { return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0; } // Shortcuts reading methods // This method returns the size of the shortcut list region excluding the shortcut list size // field at the beginning. static AK_FORCE_INLINE int getShortcutListSizeAndForwardPointer( Loading @@ -68,35 +66,12 @@ class BinaryDictionaryTerminalAttributesReadingUtils { } private: DISALLOW_IMPLICIT_CONSTRUCTORS(BinaryDictionaryTerminalAttributesReadingUtils); DISALLOW_IMPLICIT_CONSTRUCTORS(ShortcutListReadingUtils); static const TerminalAttributeFlags MASK_ATTRIBUTE_ADDRESS_TYPE; static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE; static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES; static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES; static const TerminalAttributeFlags FLAG_ATTRIBUTE_OFFSET_NEGATIVE; static const TerminalAttributeFlags FLAG_ATTRIBUTE_HAS_NEXT; static const TerminalAttributeFlags MASK_ATTRIBUTE_PROBABILITY; static const int ATTRIBUTE_ADDRESS_SHIFT; static const ShortcutFlags FLAG_ATTRIBUTE_HAS_NEXT; static const ShortcutFlags MASK_ATTRIBUTE_PROBABILITY; static const int SHORTCUT_LIST_SIZE_FIELD_SIZE; static const int WHITELIST_SHORTCUT_PROBABILITY; static AK_FORCE_INLINE bool isOffsetNegative(const TerminalAttributeFlags flags) { return (flags & FLAG_ATTRIBUTE_OFFSET_NEGATIVE) != 0; } static AK_FORCE_INLINE int attributeAddressSize(const TerminalAttributeFlags flags) { return (flags & MASK_ATTRIBUTE_ADDRESS_TYPE) >> ATTRIBUTE_ADDRESS_SHIFT; /* Note: this is a value-dependant optimization of what may probably be more readably written this way: switch (flags * BinaryFormat::MASK_ATTRIBUTE_ADDRESS_TYPE) { case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE: return 1; case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES: return 2; case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTE: return 3; default: return 0; } */ } }; } #endif /* LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H */ } // namespace latinime #endif // LATINIME_SHORTCUT_LIST_READING_UTILS_H Loading
native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_policy.h +8 −12 Original line number Diff line number Diff line Loading @@ -34,33 +34,29 @@ class ShortcutListPolicy : public DictionaryShortcutsStructurePolicy { int getStartPos(const int pos) const { int listPos = pos; BinaryDictionaryTerminalAttributesReadingUtils::getShortcutListSizeAndForwardPointer( mShortcutsBuf, &listPos); ShortcutListReadingUtils::getShortcutListSizeAndForwardPointer(mShortcutsBuf, &listPos); return listPos; } void getNextShortcut(const int maxCodePointCount, int *const outCodePoint, int *const outCodePointCount, bool *const outIsWhitelist, bool *const outHasNext, int *const pos) const { const BinaryDictionaryTerminalAttributesReadingUtils::ShortcutFlags flags = BinaryDictionaryTerminalAttributesReadingUtils::getFlagsAndForwardPointer( mShortcutsBuf, pos); const ShortcutListReadingUtils::ShortcutFlags flags = ShortcutListReadingUtils::getFlagsAndForwardPointer(mShortcutsBuf, pos); if (outHasNext) { *outHasNext = BinaryDictionaryTerminalAttributesReadingUtils::hasNext(flags); *outHasNext = ShortcutListReadingUtils::hasNext(flags); } if (outIsWhitelist) { *outIsWhitelist = BinaryDictionaryTerminalAttributesReadingUtils::isWhitelist(flags); *outIsWhitelist = ShortcutListReadingUtils::isWhitelist(flags); } if (outCodePoint) { *outCodePointCount = BinaryDictionaryTerminalAttributesReadingUtils::readShortcutTarget( *outCodePointCount = ShortcutListReadingUtils::readShortcutTarget( mShortcutsBuf, maxCodePointCount, outCodePoint, pos); } } void skipAllShortcuts(int *const pos) const { const int shortcutListSize = BinaryDictionaryTerminalAttributesReadingUtils const int shortcutListSize = ShortcutListReadingUtils ::getShortcutListSizeAndForwardPointer(mShortcutsBuf, pos); *pos += shortcutListSize; } Loading
native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.cpp +6 −14 Original line number Diff line number Diff line Loading @@ -16,24 +16,16 @@ #include "suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h" #include "suggest/core/dictionary/byte_array_utils.h" namespace latinime { typedef BinaryDictionaryTerminalAttributesReadingUtils TaUtils; const TaUtils::TerminalAttributeFlags TaUtils::MASK_ATTRIBUTE_ADDRESS_TYPE = 0x30; const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE = 0x10; const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES = 0x20; const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES = 0x30; const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_OFFSET_NEGATIVE = 0x40; // Flag for presence of more attributes const TaUtils::TerminalAttributeFlags TaUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80; const ShortcutListReadingUtils::ShortcutFlags ShortcutListReadingUtils::FLAG_ATTRIBUTE_HAS_NEXT = 0x80; // Mask for attribute probability, stored on 4 bits inside the flags byte. const TaUtils::TerminalAttributeFlags TaUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F; const int TaUtils::ATTRIBUTE_ADDRESS_SHIFT = 4; const int TaUtils::SHORTCUT_LIST_SIZE_FIELD_SIZE = 2; const ShortcutListReadingUtils::ShortcutFlags ShortcutListReadingUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F; const int ShortcutListReadingUtils::SHORTCUT_LIST_SIZE_FIELD_SIZE = 2; // The numeric value of the shortcut probability that means 'whitelist'. const int TaUtils::WHITELIST_SHORTCUT_PROBABILITY = 15; const int ShortcutListReadingUtils::WHITELIST_SHORTCUT_PROBABILITY = 15; } // namespace latinime
native/jni/src/suggest/policyimpl/dictionary/shortcut/shortcut_list_reading_utils.h +12 −37 Original line number Diff line number Diff line Loading @@ -14,8 +14,8 @@ * limitations under the License. */ #ifndef LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H #define LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H #ifndef LATINIME_SHORTCUT_LIST_READING_UTILS_H #define LATINIME_SHORTCUT_LIST_READING_UTILS_H #include <stdint.h> Loading @@ -24,25 +24,23 @@ namespace latinime { class BinaryDictionaryTerminalAttributesReadingUtils { class ShortcutListReadingUtils { public: typedef uint8_t TerminalAttributeFlags; typedef TerminalAttributeFlags ShortcutFlags; typedef uint8_t ShortcutFlags; static AK_FORCE_INLINE TerminalAttributeFlags getFlagsAndForwardPointer( static AK_FORCE_INLINE ShortcutFlags getFlagsAndForwardPointer( const uint8_t *const dictRoot, int *const pos) { return ByteArrayUtils::readUint8AndAdvancePosition(dictRoot, pos); } static AK_FORCE_INLINE int getProbabilityFromFlags(const TerminalAttributeFlags flags) { static AK_FORCE_INLINE int getProbabilityFromFlags(const ShortcutFlags flags) { return flags & MASK_ATTRIBUTE_PROBABILITY; } static AK_FORCE_INLINE bool hasNext(const TerminalAttributeFlags flags) { static AK_FORCE_INLINE bool hasNext(const ShortcutFlags flags) { return (flags & FLAG_ATTRIBUTE_HAS_NEXT) != 0; } // Shortcuts reading methods // This method returns the size of the shortcut list region excluding the shortcut list size // field at the beginning. static AK_FORCE_INLINE int getShortcutListSizeAndForwardPointer( Loading @@ -68,35 +66,12 @@ class BinaryDictionaryTerminalAttributesReadingUtils { } private: DISALLOW_IMPLICIT_CONSTRUCTORS(BinaryDictionaryTerminalAttributesReadingUtils); DISALLOW_IMPLICIT_CONSTRUCTORS(ShortcutListReadingUtils); static const TerminalAttributeFlags MASK_ATTRIBUTE_ADDRESS_TYPE; static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE; static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES; static const TerminalAttributeFlags FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTES; static const TerminalAttributeFlags FLAG_ATTRIBUTE_OFFSET_NEGATIVE; static const TerminalAttributeFlags FLAG_ATTRIBUTE_HAS_NEXT; static const TerminalAttributeFlags MASK_ATTRIBUTE_PROBABILITY; static const int ATTRIBUTE_ADDRESS_SHIFT; static const ShortcutFlags FLAG_ATTRIBUTE_HAS_NEXT; static const ShortcutFlags MASK_ATTRIBUTE_PROBABILITY; static const int SHORTCUT_LIST_SIZE_FIELD_SIZE; static const int WHITELIST_SHORTCUT_PROBABILITY; static AK_FORCE_INLINE bool isOffsetNegative(const TerminalAttributeFlags flags) { return (flags & FLAG_ATTRIBUTE_OFFSET_NEGATIVE) != 0; } static AK_FORCE_INLINE int attributeAddressSize(const TerminalAttributeFlags flags) { return (flags & MASK_ATTRIBUTE_ADDRESS_TYPE) >> ATTRIBUTE_ADDRESS_SHIFT; /* Note: this is a value-dependant optimization of what may probably be more readably written this way: switch (flags * BinaryFormat::MASK_ATTRIBUTE_ADDRESS_TYPE) { case FLAG_ATTRIBUTE_ADDRESS_TYPE_ONEBYTE: return 1; case FLAG_ATTRIBUTE_ADDRESS_TYPE_TWOBYTES: return 2; case FLAG_ATTRIBUTE_ADDRESS_TYPE_THREEBYTE: return 3; default: return 0; } */ } }; } #endif /* LATINIME_BINARY_DICTIONARY_TERMINAL_ATTRIBUTES_READING_UTILS_H */ } // namespace latinime #endif // LATINIME_SHORTCUT_LIST_READING_UTILS_H