diff options
author | 2013-09-04 19:00:53 +0900 | |
---|---|---|
committer | 2013-09-04 19:00:53 +0900 | |
commit | 5754817a5e2e804f5ced54e601d4c08087d75b44 (patch) | |
tree | 5327a0d1cedcaf97bad861a093045a3b11150349 /native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h | |
parent | 64621cf49b609ec5c8081cce202ae2f016be20bd (diff) | |
download | latinime-5754817a5e2e804f5ced54e601d4c08087d75b44.tar.gz latinime-5754817a5e2e804f5ced54e601d4c08087d75b44.tar.xz latinime-5754817a5e2e804f5ced54e601d4c08087d75b44.zip |
Employ a header attribute map in headerPolicy.
Bug: 6669677
Change-Id: I4a084cdd7fcd7a8ed3a70fb7e365031eedd981e5
Diffstat (limited to 'native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h')
-rw-r--r-- | native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h index e3e6fc077..571ff9e69 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h +++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h @@ -17,6 +17,7 @@ #ifndef LATINIME_HEADER_POLICY_H #define LATINIME_HEADER_POLICY_H +#include <cctype> #include <stdint.h> #include "defines.h" @@ -30,7 +31,8 @@ class HeaderPolicy : public DictionaryHeaderStructurePolicy { explicit HeaderPolicy(const uint8_t *const dictBuf) : mDictBuf(dictBuf), mDictionaryFlags(HeaderReadingUtils::getFlags(dictBuf)), mSize(HeaderReadingUtils::getHeaderSize(dictBuf)), - mMultiWordCostMultiplier(readMultiWordCostMultiplier()) {} + mAttributeMap(createAttributeMapAndReadAllAttributes(mDictBuf)), + mMultiWordCostMultiplier(readMultipleWordCostMultiplier()) {} ~HeaderPolicy() {} @@ -55,34 +57,31 @@ class HeaderPolicy : public DictionaryHeaderStructurePolicy { return mMultiWordCostMultiplier; } - AK_FORCE_INLINE void readHeaderValueOrQuestionMark(const char *const key, - int *outValue, int outValueSize) const { - if (outValueSize <= 0) return; - if (outValueSize == 1) { - outValue[0] = '\0'; - return; - } - if (!HeaderReadingUtils::readHeaderValue(mDictBuf, - key, outValue, outValueSize)) { - outValue[0] = '?'; - outValue[1] = '\0'; - } - } + void readHeaderValueOrQuestionMark(const char *const key, + int *outValue, int outValueSize) const; private: DISALLOW_IMPLICIT_CONSTRUCTORS(HeaderPolicy); static const char *const MULTIPLE_WORDS_DEMOTION_RATE_KEY; - static const float DEFAULT_MULTI_WORD_COST_MULTIPLIER; - static const float MULTI_WORD_COST_MULTIPLIER_SCALE; + static const float DEFAULT_MULTIPLE_WORD_COST_MULTIPLIER; + static const float MULTIPLE_WORD_COST_MULTIPLIER_SCALE; const uint8_t *const mDictBuf; const HeaderReadingUtils::DictionaryFlags mDictionaryFlags; const int mSize; + HeaderReadingUtils::AttributeMap mAttributeMap; const float mMultiWordCostMultiplier; - float readMultiWordCostMultiplier() const; -}; + float readMultipleWordCostMultiplier() const; + + static HeaderReadingUtils::AttributeMap createAttributeMapAndReadAllAttributes( + const uint8_t *const dictBuf); + static int parseIntAttributeValue(const std::vector<int> *const attributeValue); + + static void insertCharactersIntoVector( + const char *const characters, std::vector<int> *const vector); +}; } // namespace latinime #endif /* LATINIME_HEADER_POLICY_H */ |