Index: third_party/prediction/suggest/policyimpl/dictionary/header/header_read_write_utils.h |
diff --git a/third_party/prediction/suggest/policyimpl/dictionary/header/header_read_write_utils.h b/third_party/prediction/suggest/policyimpl/dictionary/header/header_read_write_utils.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6c1435739e0cc830fb2bc96f3df7b99b9faab3f8 |
--- /dev/null |
+++ b/third_party/prediction/suggest/policyimpl/dictionary/header/header_read_write_utils.h |
@@ -0,0 +1,135 @@ |
+/* |
+ * 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_READ_WRITE_UTILS_H |
+#define LATINIME_HEADER_READ_WRITE_UTILS_H |
+ |
+#include <cstdint> |
+ |
+#include "third_party/prediction/defines.h" |
+#include "third_party/prediction/suggest/core/policy/dictionary_header_structure_policy.h" |
+#include "third_party/prediction/suggest/policyimpl/dictionary/utils/format_utils.h" |
+ |
+namespace latinime { |
+ |
+class BufferWithExtendableBuffer; |
+ |
+class HeaderReadWriteUtils { |
+ public: |
+ typedef uint16_t DictionaryFlags; |
+ |
+ static int getHeaderSize(const uint8_t* const dictBuf); |
+ |
+ static DictionaryFlags getFlags(const uint8_t* const dictBuf); |
+ |
+ static AK_FORCE_INLINE int getHeaderOptionsPosition() { |
+ return HEADER_MAGIC_NUMBER_SIZE + HEADER_DICTIONARY_VERSION_SIZE + |
+ HEADER_FLAG_SIZE + HEADER_SIZE_FIELD_SIZE; |
+ } |
+ |
+ static DictionaryFlags createAndGetDictionaryFlagsUsingAttributeMap( |
+ const DictionaryHeaderStructurePolicy::AttributeMap* const attributeMap); |
+ |
+ static void fetchAllHeaderAttributes( |
+ const uint8_t* const dictBuf, |
+ DictionaryHeaderStructurePolicy::AttributeMap* const headerAttributes); |
+ |
+ static bool writeDictionaryVersion(BufferWithExtendableBuffer* const buffer, |
+ const FormatUtils::FORMAT_VERSION version, |
+ int* const writingPos); |
+ |
+ static bool writeDictionaryFlags(BufferWithExtendableBuffer* const buffer, |
+ const DictionaryFlags flags, |
+ int* const writingPos); |
+ |
+ static bool writeDictionaryHeaderSize( |
+ BufferWithExtendableBuffer* const buffer, |
+ const int size, |
+ int* const writingPos); |
+ |
+ static bool writeHeaderAttributes( |
+ BufferWithExtendableBuffer* const buffer, |
+ const DictionaryHeaderStructurePolicy::AttributeMap* const |
+ headerAttributes, |
+ int* const writingPos); |
+ |
+ /** |
+ * Methods for header attributes. |
+ */ |
+ static void setCodePointVectorAttribute( |
+ DictionaryHeaderStructurePolicy::AttributeMap* const headerAttributes, |
+ const char* const key, |
+ const std::vector<int> value); |
+ |
+ static void setBoolAttribute( |
+ DictionaryHeaderStructurePolicy::AttributeMap* const headerAttributes, |
+ const char* const key, |
+ const bool value); |
+ |
+ static void setIntAttribute( |
+ DictionaryHeaderStructurePolicy::AttributeMap* const headerAttributes, |
+ const char* const key, |
+ const int value); |
+ |
+ static const std::vector<int> readCodePointVectorAttributeValue( |
+ const DictionaryHeaderStructurePolicy::AttributeMap* const |
+ headerAttributes, |
+ const char* const key); |
+ |
+ static bool readBoolAttributeValue( |
+ const DictionaryHeaderStructurePolicy::AttributeMap* const |
+ headerAttributes, |
+ const char* const key, |
+ const bool defaultValue); |
+ |
+ static int readIntAttributeValue( |
+ const DictionaryHeaderStructurePolicy::AttributeMap* const |
+ headerAttributes, |
+ const char* const key, |
+ const int defaultValue); |
+ |
+ static void insertCharactersIntoVector( |
+ const char* const characters, |
+ DictionaryHeaderStructurePolicy::AttributeMap::key_type* const key); |
+ |
+ private: |
+ DISALLOW_IMPLICIT_CONSTRUCTORS(HeaderReadWriteUtils); |
+ |
+ static const int LARGEST_INT_DIGIT_COUNT; |
+ static const int MAX_ATTRIBUTE_KEY_LENGTH; |
+ static const int MAX_ATTRIBUTE_VALUE_LENGTH; |
+ |
+ static const int HEADER_MAGIC_NUMBER_SIZE; |
+ static const int HEADER_DICTIONARY_VERSION_SIZE; |
+ static const int HEADER_FLAG_SIZE; |
+ static const int HEADER_SIZE_FIELD_SIZE; |
+ |
+ // Value for the "flags" field. It's unused at the moment. |
+ static const DictionaryFlags NO_FLAGS; |
+ |
+ static void setIntAttributeInner( |
+ DictionaryHeaderStructurePolicy::AttributeMap* const headerAttributes, |
+ const DictionaryHeaderStructurePolicy::AttributeMap::key_type* const key, |
+ const int value); |
+ |
+ static int readIntAttributeValueInner( |
+ const DictionaryHeaderStructurePolicy::AttributeMap* const |
+ headerAttributes, |
+ const DictionaryHeaderStructurePolicy::AttributeMap::key_type* const key, |
+ const int defaultValue); |
+}; |
+} |
+#endif /* LATINIME_HEADER_READ_WRITE_UTILS_H */ |