| Index: third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h
|
| diff --git a/third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h b/third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4db481f9f38e971a7282cc04f006a910f73087ba
|
| --- /dev/null
|
| +++ b/third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_policy.h
|
| @@ -0,0 +1,188 @@
|
| +/*
|
| + * 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.
|
| + */
|
| +
|
| +/*
|
| + * !!!!! DO NOT CHANGE THE LOGIC IN THIS FILE !!!!!
|
| + * Do not edit this file other than updating policy's interface.
|
| + *
|
| + * This file was generated from
|
| + * third_party/prediction/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.h
|
| + */
|
| +
|
| +#ifndef LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_POLICY_H
|
| +#define LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_POLICY_H
|
| +
|
| +#include <vector>
|
| +
|
| +#include "third_party/prediction/defines.h"
|
| +#include "third_party/prediction/suggest/core/policy/dictionary_structure_with_buffer_policy.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/header/header_policy.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/structure/pt_common/dynamic_pt_updating_helper.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/bigram/ver4_bigram_list_policy.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/shortcut/ver4_shortcut_list_policy.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_dict_buffers.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_reader.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_node_writer.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_patricia_trie_writing_helper.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/structure/backward/v402/ver4_pt_node_array_reader.h"
|
| +#include "third_party/prediction/suggest/policyimpl/dictionary/utils/buffer_with_extendable_buffer.h"
|
| +
|
| +namespace latinime {
|
| +namespace backward {
|
| +namespace v402 {} // namespace v402
|
| +} // namespace backward
|
| +class DicNode;
|
| +namespace backward {
|
| +namespace v402 {} // namespace v402
|
| +} // namespace backward
|
| +class DicNodeVector;
|
| +namespace backward {
|
| +namespace v402 {
|
| +
|
| +class Ver4PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy {
|
| + public:
|
| + Ver4PatriciaTriePolicy(Ver4DictBuffers::Ver4DictBuffersPtr buffers)
|
| + : mBuffers(std::move(buffers)),
|
| + mHeaderPolicy(mBuffers->getHeaderPolicy()),
|
| + mDictBuffer(mBuffers->getWritableTrieBuffer()),
|
| + mBigramPolicy(mBuffers->getMutableBigramDictContent(),
|
| + mBuffers->getTerminalPositionLookupTable(),
|
| + mHeaderPolicy),
|
| + mShortcutPolicy(mBuffers->getMutableShortcutDictContent(),
|
| + mBuffers->getTerminalPositionLookupTable()),
|
| + mNodeReader(mDictBuffer,
|
| + mBuffers->getProbabilityDictContent(),
|
| + mHeaderPolicy),
|
| + mPtNodeArrayReader(mDictBuffer),
|
| + mNodeWriter(mDictBuffer,
|
| + mBuffers.get(),
|
| + mHeaderPolicy,
|
| + &mNodeReader,
|
| + &mPtNodeArrayReader,
|
| + &mBigramPolicy,
|
| + &mShortcutPolicy),
|
| + mUpdatingHelper(mDictBuffer, &mNodeReader, &mNodeWriter),
|
| + mWritingHelper(mBuffers.get()),
|
| + mUnigramCount(mHeaderPolicy->getUnigramCount()),
|
| + mBigramCount(mHeaderPolicy->getBigramCount()),
|
| + mTerminalPtNodePositionsForIteratingWords(),
|
| + mIsCorrupted(false){};
|
| +
|
| + AK_FORCE_INLINE int getRootPosition() const { return 0; }
|
| +
|
| + void createAndGetAllChildDicNodes(const DicNode* const dicNode,
|
| + DicNodeVector* const childDicNodes) const;
|
| +
|
| + int getCodePointsAndProbabilityAndReturnCodePointCount(
|
| + const int terminalPtNodePos,
|
| + const int maxCodePointCount,
|
| + int* const outCodePoints,
|
| + int* const outUnigramProbability) const;
|
| +
|
| + int getTerminalPtNodePositionOfWord(const int* const inWord,
|
| + const int length,
|
| + const bool forceLowerCaseSearch) const;
|
| +
|
| + int getProbability(const int unigramProbability,
|
| + const int bigramProbability) const;
|
| +
|
| + int getProbabilityOfPtNode(const int* const prevWordsPtNodePos,
|
| + const int ptNodePos) const;
|
| +
|
| + void iterateNgramEntries(const int* const prevWordsPtNodePos,
|
| + NgramListener* const listener) const;
|
| +
|
| + int getShortcutPositionOfPtNode(const int ptNodePos) const;
|
| +
|
| + const DictionaryHeaderStructurePolicy* getHeaderStructurePolicy() const {
|
| + return mHeaderPolicy;
|
| + }
|
| +
|
| + const DictionaryShortcutsStructurePolicy* getShortcutsStructurePolicy()
|
| + const {
|
| + return &mShortcutPolicy;
|
| + }
|
| +
|
| + bool addUnigramEntry(const int* const word,
|
| + const int length,
|
| + const UnigramProperty* const unigramProperty);
|
| +
|
| + bool removeUnigramEntry(const int* const word, const int length) {
|
| + // Removing unigram entry is not supported.
|
| + return false;
|
| + }
|
| +
|
| + bool addNgramEntry(const PrevWordsInfo* const prevWordsInfo,
|
| + const BigramProperty* const bigramProperty);
|
| +
|
| + bool removeNgramEntry(const PrevWordsInfo* const prevWordsInfo,
|
| + const int* const word1,
|
| + const int length1);
|
| +
|
| + bool flush(const char* const filePath);
|
| +
|
| + bool flushWithGC(const char* const filePath);
|
| +
|
| + bool needsToRunGC(const bool mindsBlockByGC) const;
|
| +
|
| + void getProperty(const char* const query,
|
| + const int queryLength,
|
| + char* const outResult,
|
| + const int maxResultLength);
|
| +
|
| + const WordProperty getWordProperty(const int* const codePoints,
|
| + const int codePointCount) const;
|
| +
|
| + int getNextWordAndNextToken(const int token,
|
| + int* const outCodePoints,
|
| + int* const outCodePointCount);
|
| +
|
| + bool isCorrupted() const { return mIsCorrupted; }
|
| +
|
| + private:
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(Ver4PatriciaTriePolicy);
|
| +
|
| + static const char* const UNIGRAM_COUNT_QUERY;
|
| + static const char* const BIGRAM_COUNT_QUERY;
|
| + static const char* const MAX_UNIGRAM_COUNT_QUERY;
|
| + static const char* const MAX_BIGRAM_COUNT_QUERY;
|
| + // When the dictionary size is near the maximum size, we have to refuse
|
| + // dynamic operations to
|
| + // prevent the dictionary from overflowing.
|
| + static const int MARGIN_TO_REFUSE_DYNAMIC_OPERATIONS;
|
| + static const int MIN_DICT_SIZE_TO_REFUSE_DYNAMIC_OPERATIONS;
|
| +
|
| + const Ver4DictBuffers::Ver4DictBuffersPtr mBuffers;
|
| + const HeaderPolicy* const mHeaderPolicy;
|
| + BufferWithExtendableBuffer* const mDictBuffer;
|
| + Ver4BigramListPolicy mBigramPolicy;
|
| + Ver4ShortcutListPolicy mShortcutPolicy;
|
| + Ver4PatriciaTrieNodeReader mNodeReader;
|
| + Ver4PtNodeArrayReader mPtNodeArrayReader;
|
| + Ver4PatriciaTrieNodeWriter mNodeWriter;
|
| + DynamicPtUpdatingHelper mUpdatingHelper;
|
| + Ver4PatriciaTrieWritingHelper mWritingHelper;
|
| + int mUnigramCount;
|
| + int mBigramCount;
|
| + std::vector<int> mTerminalPtNodePositionsForIteratingWords;
|
| + mutable bool mIsCorrupted;
|
| +
|
| + int getBigramsPositionOfPtNode(const int ptNodePos) const;
|
| +};
|
| +} // namespace v402
|
| +} // namespace backward
|
| +} // namespace latinime
|
| +#endif // LATINIME_BACKWARD_V402_VER4_PATRICIA_TRIE_POLICY_H
|
|
|