aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src/terminal_attributes.h
diff options
context:
space:
mode:
Diffstat (limited to 'native/jni/src/terminal_attributes.h')
-rw-r--r--native/jni/src/terminal_attributes.h44
1 files changed, 24 insertions, 20 deletions
diff --git a/native/jni/src/terminal_attributes.h b/native/jni/src/terminal_attributes.h
index 9a803cca1..53ae385ea 100644
--- a/native/jni/src/terminal_attributes.h
+++ b/native/jni/src/terminal_attributes.h
@@ -17,7 +17,7 @@
#ifndef LATINIME_TERMINAL_ATTRIBUTES_H
#define LATINIME_TERMINAL_ATTRIBUTES_H
-#include "unigram_dictionary.h"
+#include "binary_format.h"
namespace latinime {
@@ -29,14 +29,14 @@ namespace latinime {
class TerminalAttributes {
public:
class ShortcutIterator {
- const uint8_t* const mDict;
- bool mHasNextShortcutTarget;
+ const uint8_t *const mDict;
int mPos;
+ bool mHasNextShortcutTarget;
public:
- ShortcutIterator(const uint8_t* dict, const int pos, const uint8_t flags) : mDict(dict),
- mPos(pos) {
- mHasNextShortcutTarget = (0 != (flags & UnigramDictionary::FLAG_HAS_SHORTCUT_TARGETS));
+ ShortcutIterator(const uint8_t *dict, const int pos, const uint8_t flags)
+ : mDict(dict), mPos(pos),
+ mHasNextShortcutTarget(0 != (flags & BinaryFormat::FLAG_HAS_SHORTCUT_TARGETS)) {
}
inline bool hasNextShortcutTarget() const {
@@ -46,29 +46,24 @@ class TerminalAttributes {
// Gets the shortcut target itself as a uint16_t string. For parameters and return value
// see BinaryFormat::getWordAtAddress.
// TODO: make the output an uint32_t* to handle the whole unicode range.
- inline int getNextShortcutTarget(const int maxDepth, uint16_t* outWord) {
+ inline int getNextShortcutTarget(const int maxDepth, uint16_t *outWord, int *outFreq) {
const int shortcutFlags = BinaryFormat::getFlagsAndForwardPointer(mDict, &mPos);
mHasNextShortcutTarget =
- 0 != (shortcutFlags & UnigramDictionary::FLAG_ATTRIBUTE_HAS_NEXT);
+ 0 != (shortcutFlags & BinaryFormat::FLAG_ATTRIBUTE_HAS_NEXT);
unsigned int i;
for (i = 0; i < MAX_WORD_LENGTH_INTERNAL; ++i) {
- const int charCode = BinaryFormat::getCharCodeAndForwardPointer(mDict, &mPos);
- if (NOT_A_CHARACTER == charCode) break;
- outWord[i] = (uint16_t)charCode;
+ const int codePoint = BinaryFormat::getCodePointAndForwardPointer(mDict, &mPos);
+ if (NOT_A_CODE_POINT == codePoint) break;
+ outWord[i] = (uint16_t)codePoint;
}
+ *outFreq = BinaryFormat::getAttributeFrequencyFromFlags(shortcutFlags);
mPos += BinaryFormat::CHARACTER_ARRAY_TERMINATOR_SIZE;
return i;
}
};
- private:
- const uint8_t* const mDict;
- const uint8_t mFlags;
- const int mStartPos;
-
- public:
- TerminalAttributes(const uint8_t* const dict, const uint8_t flags, const int pos) :
- mDict(dict), mFlags(flags), mStartPos(pos) {
+ TerminalAttributes(const uint8_t *const dict, const uint8_t flags, const int pos)
+ : mDict(dict), mFlags(flags), mStartPos(pos) {
}
inline ShortcutIterator getShortcutIterator() const {
@@ -76,7 +71,16 @@ class TerminalAttributes {
// skipped quickly, so we ignore it.
return ShortcutIterator(mDict, mStartPos + BinaryFormat::SHORTCUT_LIST_SIZE_SIZE, mFlags);
}
+
+ bool isBlacklistedOrNotAWord() const {
+ return mFlags & (BinaryFormat::FLAG_IS_BLACKLISTED | BinaryFormat::FLAG_IS_NOT_A_WORD);
+ }
+
+ private:
+ DISALLOW_IMPLICIT_CONSTRUCTORS(TerminalAttributes);
+ const uint8_t *const mDict;
+ const uint8_t mFlags;
+ const int mStartPos;
};
} // namespace latinime
-
#endif // LATINIME_TERMINAL_ATTRIBUTES_H