aboutsummaryrefslogtreecommitdiffstats
path: root/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2013-08-13 20:35:16 +0900
committerKeisuke Kuroyanagi <ksk@google.com>2013-08-13 20:35:16 +0900
commit23d3ed962f150578d98da7b9c61c0466d5697d93 (patch)
tree5038e79a69913ead40c77701a780de927d50b322 /native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
parent76e579c7caf2ef04f440be21c27377fe0b4150ff (diff)
downloadlatinime-23d3ed962f150578d98da7b9c61c0466d5697d93.tar.gz
latinime-23d3ed962f150578d98da7b9c61c0466d5697d93.tar.xz
latinime-23d3ed962f150578d98da7b9c61c0466d5697d93.zip
Move files for headerPolicy to policyimpl.
Bug: 6669677 Change-Id: Ic90feb9c3a9a7b698e588c8ad25c765a246706a8
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.h88
1 files changed, 88 insertions, 0 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
new file mode 100644
index 000000000..e3e6fc077
--- /dev/null
+++ b/native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+
+#ifndef LATINIME_HEADER_POLICY_H
+#define LATINIME_HEADER_POLICY_H
+
+#include <stdint.h>
+
+#include "defines.h"
+#include "suggest/core/policy/dictionary_header_structure_policy.h"
+#include "suggest/policyimpl/dictionary/header/header_reading_utils.h"
+
+namespace latinime {
+
+class HeaderPolicy : public DictionaryHeaderStructurePolicy {
+ public:
+ explicit HeaderPolicy(const uint8_t *const dictBuf)
+ : mDictBuf(dictBuf), mDictionaryFlags(HeaderReadingUtils::getFlags(dictBuf)),
+ mSize(HeaderReadingUtils::getHeaderSize(dictBuf)),
+ mMultiWordCostMultiplier(readMultiWordCostMultiplier()) {}
+
+ ~HeaderPolicy() {}
+
+ AK_FORCE_INLINE int getSize() const {
+ return mSize;
+ }
+
+ AK_FORCE_INLINE bool supportsDynamicUpdate() const {
+ return HeaderReadingUtils::supportsDynamicUpdate(mDictionaryFlags);
+ }
+
+ AK_FORCE_INLINE bool requiresGermanUmlautProcessing() const {
+ return HeaderReadingUtils::requiresGermanUmlautProcessing(mDictionaryFlags);
+ }
+
+ AK_FORCE_INLINE bool requiresFrenchLigatureProcessing() const {
+ return HeaderReadingUtils::requiresFrenchLigatureProcessing(
+ mDictionaryFlags);
+ }
+
+ AK_FORCE_INLINE float getMultiWordCostMultiplier() const {
+ 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';
+ }
+ }
+
+ 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;
+
+ const uint8_t *const mDictBuf;
+ const HeaderReadingUtils::DictionaryFlags mDictionaryFlags;
+ const int mSize;
+ const float mMultiWordCostMultiplier;
+
+ float readMultiWordCostMultiplier() const;
+};
+
+} // namespace latinime
+#endif /* LATINIME_HEADER_POLICY_H */