Loading native/jni/src/suggest/policyimpl/dictionary/header/header_policy.cpp +31 −24 Original line number Diff line number Diff line Loading @@ -73,51 +73,58 @@ bool HeaderPolicy::readRequiresGermanUmlautProcessing() const { REQUIRES_GERMAN_UMLAUT_PROCESSING_KEY, false); } bool HeaderPolicy::writeHeaderToBuffer(BufferWithExtendableBuffer *const bufferToWrite, const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize) const { bool HeaderPolicy::fillInAndWriteHeaderToBuffer(const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize, BufferWithExtendableBuffer *const outBuffer) const { int writingPos = 0; if (!HeaderReadWriteUtils::writeDictionaryVersion(bufferToWrite, mDictFormatVersion, HeaderReadWriteUtils::AttributeMap attributeMapToWrite(mAttributeMap); fillInHeader(updatesLastDecayedTime, updatesLastDecayedTime, unigramCount, bigramCount, extendedRegionSize, &attributeMapToWrite); if (!HeaderReadWriteUtils::writeDictionaryVersion(outBuffer, mDictFormatVersion, &writingPos)) { return false; } if (!HeaderReadWriteUtils::writeDictionaryFlags(bufferToWrite, mDictionaryFlags, if (!HeaderReadWriteUtils::writeDictionaryFlags(outBuffer, mDictionaryFlags, &writingPos)) { return false; } // Temporarily writes a dummy header size. int headerSizeFieldPos = writingPos; if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(bufferToWrite, 0 /* size */, if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(outBuffer, 0 /* size */, &writingPos)) { return false; } HeaderReadWriteUtils::AttributeMap attributeMapTowrite(mAttributeMap); HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, UNIGRAM_COUNT_KEY, unigramCount); HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, BIGRAM_COUNT_KEY, bigramCount); HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, EXTENDED_REGION_SIZE_KEY, extendedRegionSize); if (updatesLastUpdatedTime) { // Set current time as a last updated time. HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, LAST_UPDATED_TIME_KEY, TimeKeeper::peekCurrentTime()); } if (updatesLastDecayedTime) { // Set current time as a last updated time. HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, LAST_DECAYED_TIME_KEY, TimeKeeper::peekCurrentTime()); } if (!HeaderReadWriteUtils::writeHeaderAttributes(bufferToWrite, &attributeMapTowrite, if (!HeaderReadWriteUtils::writeHeaderAttributes(outBuffer, &attributeMapToWrite, &writingPos)) { return false; } // Writes an actual header size. if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(bufferToWrite, writingPos, // Writes the actual header size. if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(outBuffer, writingPos, &headerSizeFieldPos)) { return false; } return true; } void HeaderPolicy::fillInHeader(const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize, HeaderReadWriteUtils::AttributeMap *outAttributeMap) const { HeaderReadWriteUtils::setIntAttribute(outAttributeMap, UNIGRAM_COUNT_KEY, unigramCount); HeaderReadWriteUtils::setIntAttribute(outAttributeMap, BIGRAM_COUNT_KEY, bigramCount); HeaderReadWriteUtils::setIntAttribute(outAttributeMap, EXTENDED_REGION_SIZE_KEY, extendedRegionSize); if (updatesLastUpdatedTime) { // Set current time as the last updated time. HeaderReadWriteUtils::setIntAttribute(outAttributeMap, LAST_UPDATED_TIME_KEY, TimeKeeper::peekCurrentTime()); } if (updatesLastDecayedTime) { // Set current time as the last updated time. HeaderReadWriteUtils::setIntAttribute(outAttributeMap, LAST_DECAYED_TIME_KEY, TimeKeeper::peekCurrentTime()); } } /* static */ HeaderReadWriteUtils::AttributeMap HeaderPolicy::createAttributeMapAndReadAllAttributes(const uint8_t *const dictBuf) { HeaderReadWriteUtils::AttributeMap attributeMap; Loading native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h +7 −3 Original line number Diff line number Diff line Loading @@ -149,9 +149,13 @@ class HeaderPolicy : public DictionaryHeaderStructurePolicy { void readHeaderValueOrQuestionMark(const char *const key, int *outValue, int outValueSize) const; bool writeHeaderToBuffer(BufferWithExtendableBuffer *const bufferToWrite, const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize) const; bool fillInAndWriteHeaderToBuffer(const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize, BufferWithExtendableBuffer *const outBuffer) const; void fillInHeader(const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize, HeaderReadWriteUtils::AttributeMap *outAttributeMap) const; private: DISALLOW_COPY_AND_ASSIGN(HeaderPolicy); Loading native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -39,8 +39,9 @@ void Ver4PatriciaTrieWritingHelper::writeToDictFile(const char *const dictDirPat BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE); const int extendedRegionSize = headerPolicy->getExtendedRegionSize() + mBuffers->getTrieBuffer()->getUsedAdditionalBufferSize(); if (!headerPolicy->writeHeaderToBuffer(&headerBuffer, false /* updatesLastUpdatedTime */, false /* updatesLastDecayedTime */, unigramCount, bigramCount, extendedRegionSize)) { if (!headerPolicy->fillInAndWriteHeaderToBuffer(false /* updatesLastUpdatedTime */, false /* updatesLastDecayedTime */, unigramCount, bigramCount, extendedRegionSize, &headerBuffer)) { AKLOGE("Cannot write header structure to buffer. updatesLastUpdatedTime: %d, " "updatesLastDecayedTime: %d, unigramCount: %d, bigramCount: %d, " "extendedRegionSize: %d", false, false, unigramCount, bigramCount, Loading @@ -62,9 +63,9 @@ void Ver4PatriciaTrieWritingHelper::writeToDictFileWithGC(const int rootPtNodeAr } BufferWithExtendableBuffer headerBuffer( BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE); if (!headerPolicy->writeHeaderToBuffer(&headerBuffer, true /* updatesLastUpdatedTime */, if (!headerPolicy->fillInAndWriteHeaderToBuffer(true /* updatesLastUpdatedTime */, true /* updatesLastDecayedTime */, unigramCount, bigramCount, 0 /* extendedRegionSize */)) { 0 /* extendedRegionSize */, &headerBuffer)) { return; } dictBuffers.get()->flushHeaderAndDictBuffers(dictDirPath, &headerBuffer); Loading native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -48,9 +48,9 @@ const char *const DictFileWritingUtils::TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE = HeaderPolicy headerPolicy(FormatUtils::VERSION_4, attributeMap); Ver4DictBuffers::Ver4DictBuffersPtr dictBuffers = Ver4DictBuffers::createVer4DictBuffers(&headerPolicy); headerPolicy.writeHeaderToBuffer(dictBuffers.get()->getWritableHeaderBuffer(), true /* updatesLastUpdatedTime */, true /* updatesLastDecayedTime */, 0 /* unigramCount */, 0 /* bigramCount */, 0 /* extendedRegionSize */); headerPolicy.fillInAndWriteHeaderToBuffer(true /* updatesLastUpdatedTime */, true /* updatesLastDecayedTime */, 0 /* unigramCount */, 0 /* bigramCount */, 0 /* extendedRegionSize */, dictBuffers.get()->getWritableHeaderBuffer()); if (!DynamicPtWritingUtils::writeEmptyDictionary( dictBuffers.get()->getWritableTrieBuffer(), 0 /* rootPos */)) { AKLOGE("Empty ver4 dictionary structure cannot be created on memory."); Loading Loading
native/jni/src/suggest/policyimpl/dictionary/header/header_policy.cpp +31 −24 Original line number Diff line number Diff line Loading @@ -73,51 +73,58 @@ bool HeaderPolicy::readRequiresGermanUmlautProcessing() const { REQUIRES_GERMAN_UMLAUT_PROCESSING_KEY, false); } bool HeaderPolicy::writeHeaderToBuffer(BufferWithExtendableBuffer *const bufferToWrite, const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize) const { bool HeaderPolicy::fillInAndWriteHeaderToBuffer(const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize, BufferWithExtendableBuffer *const outBuffer) const { int writingPos = 0; if (!HeaderReadWriteUtils::writeDictionaryVersion(bufferToWrite, mDictFormatVersion, HeaderReadWriteUtils::AttributeMap attributeMapToWrite(mAttributeMap); fillInHeader(updatesLastDecayedTime, updatesLastDecayedTime, unigramCount, bigramCount, extendedRegionSize, &attributeMapToWrite); if (!HeaderReadWriteUtils::writeDictionaryVersion(outBuffer, mDictFormatVersion, &writingPos)) { return false; } if (!HeaderReadWriteUtils::writeDictionaryFlags(bufferToWrite, mDictionaryFlags, if (!HeaderReadWriteUtils::writeDictionaryFlags(outBuffer, mDictionaryFlags, &writingPos)) { return false; } // Temporarily writes a dummy header size. int headerSizeFieldPos = writingPos; if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(bufferToWrite, 0 /* size */, if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(outBuffer, 0 /* size */, &writingPos)) { return false; } HeaderReadWriteUtils::AttributeMap attributeMapTowrite(mAttributeMap); HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, UNIGRAM_COUNT_KEY, unigramCount); HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, BIGRAM_COUNT_KEY, bigramCount); HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, EXTENDED_REGION_SIZE_KEY, extendedRegionSize); if (updatesLastUpdatedTime) { // Set current time as a last updated time. HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, LAST_UPDATED_TIME_KEY, TimeKeeper::peekCurrentTime()); } if (updatesLastDecayedTime) { // Set current time as a last updated time. HeaderReadWriteUtils::setIntAttribute(&attributeMapTowrite, LAST_DECAYED_TIME_KEY, TimeKeeper::peekCurrentTime()); } if (!HeaderReadWriteUtils::writeHeaderAttributes(bufferToWrite, &attributeMapTowrite, if (!HeaderReadWriteUtils::writeHeaderAttributes(outBuffer, &attributeMapToWrite, &writingPos)) { return false; } // Writes an actual header size. if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(bufferToWrite, writingPos, // Writes the actual header size. if (!HeaderReadWriteUtils::writeDictionaryHeaderSize(outBuffer, writingPos, &headerSizeFieldPos)) { return false; } return true; } void HeaderPolicy::fillInHeader(const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize, HeaderReadWriteUtils::AttributeMap *outAttributeMap) const { HeaderReadWriteUtils::setIntAttribute(outAttributeMap, UNIGRAM_COUNT_KEY, unigramCount); HeaderReadWriteUtils::setIntAttribute(outAttributeMap, BIGRAM_COUNT_KEY, bigramCount); HeaderReadWriteUtils::setIntAttribute(outAttributeMap, EXTENDED_REGION_SIZE_KEY, extendedRegionSize); if (updatesLastUpdatedTime) { // Set current time as the last updated time. HeaderReadWriteUtils::setIntAttribute(outAttributeMap, LAST_UPDATED_TIME_KEY, TimeKeeper::peekCurrentTime()); } if (updatesLastDecayedTime) { // Set current time as the last updated time. HeaderReadWriteUtils::setIntAttribute(outAttributeMap, LAST_DECAYED_TIME_KEY, TimeKeeper::peekCurrentTime()); } } /* static */ HeaderReadWriteUtils::AttributeMap HeaderPolicy::createAttributeMapAndReadAllAttributes(const uint8_t *const dictBuf) { HeaderReadWriteUtils::AttributeMap attributeMap; Loading
native/jni/src/suggest/policyimpl/dictionary/header/header_policy.h +7 −3 Original line number Diff line number Diff line Loading @@ -149,9 +149,13 @@ class HeaderPolicy : public DictionaryHeaderStructurePolicy { void readHeaderValueOrQuestionMark(const char *const key, int *outValue, int outValueSize) const; bool writeHeaderToBuffer(BufferWithExtendableBuffer *const bufferToWrite, const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize) const; bool fillInAndWriteHeaderToBuffer(const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize, BufferWithExtendableBuffer *const outBuffer) const; void fillInHeader(const bool updatesLastUpdatedTime, const bool updatesLastDecayedTime, const int unigramCount, const int bigramCount, const int extendedRegionSize, HeaderReadWriteUtils::AttributeMap *outAttributeMap) const; private: DISALLOW_COPY_AND_ASSIGN(HeaderPolicy); Loading
native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_writing_helper.cpp +5 −4 Original line number Diff line number Diff line Loading @@ -39,8 +39,9 @@ void Ver4PatriciaTrieWritingHelper::writeToDictFile(const char *const dictDirPat BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE); const int extendedRegionSize = headerPolicy->getExtendedRegionSize() + mBuffers->getTrieBuffer()->getUsedAdditionalBufferSize(); if (!headerPolicy->writeHeaderToBuffer(&headerBuffer, false /* updatesLastUpdatedTime */, false /* updatesLastDecayedTime */, unigramCount, bigramCount, extendedRegionSize)) { if (!headerPolicy->fillInAndWriteHeaderToBuffer(false /* updatesLastUpdatedTime */, false /* updatesLastDecayedTime */, unigramCount, bigramCount, extendedRegionSize, &headerBuffer)) { AKLOGE("Cannot write header structure to buffer. updatesLastUpdatedTime: %d, " "updatesLastDecayedTime: %d, unigramCount: %d, bigramCount: %d, " "extendedRegionSize: %d", false, false, unigramCount, bigramCount, Loading @@ -62,9 +63,9 @@ void Ver4PatriciaTrieWritingHelper::writeToDictFileWithGC(const int rootPtNodeAr } BufferWithExtendableBuffer headerBuffer( BufferWithExtendableBuffer::DEFAULT_MAX_ADDITIONAL_BUFFER_SIZE); if (!headerPolicy->writeHeaderToBuffer(&headerBuffer, true /* updatesLastUpdatedTime */, if (!headerPolicy->fillInAndWriteHeaderToBuffer(true /* updatesLastUpdatedTime */, true /* updatesLastDecayedTime */, unigramCount, bigramCount, 0 /* extendedRegionSize */)) { 0 /* extendedRegionSize */, &headerBuffer)) { return; } dictBuffers.get()->flushHeaderAndDictBuffers(dictDirPath, &headerBuffer); Loading
native/jni/src/suggest/policyimpl/dictionary/utils/dict_file_writing_utils.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -48,9 +48,9 @@ const char *const DictFileWritingUtils::TEMP_FILE_SUFFIX_FOR_WRITING_DICT_FILE = HeaderPolicy headerPolicy(FormatUtils::VERSION_4, attributeMap); Ver4DictBuffers::Ver4DictBuffersPtr dictBuffers = Ver4DictBuffers::createVer4DictBuffers(&headerPolicy); headerPolicy.writeHeaderToBuffer(dictBuffers.get()->getWritableHeaderBuffer(), true /* updatesLastUpdatedTime */, true /* updatesLastDecayedTime */, 0 /* unigramCount */, 0 /* bigramCount */, 0 /* extendedRegionSize */); headerPolicy.fillInAndWriteHeaderToBuffer(true /* updatesLastUpdatedTime */, true /* updatesLastDecayedTime */, 0 /* unigramCount */, 0 /* bigramCount */, 0 /* extendedRegionSize */, dictBuffers.get()->getWritableHeaderBuffer()); if (!DynamicPtWritingUtils::writeEmptyDictionary( dictBuffers.get()->getWritableTrieBuffer(), 0 /* rootPos */)) { AKLOGE("Empty ver4 dictionary structure cannot be created on memory."); Loading