12fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa/* 22fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * Copyright (C) 2013, The Android Open Source Project 32fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * 42fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * Licensed under the Apache License, Version 2.0 (the "License"); 52fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * you may not use this file except in compliance with the License. 62fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * You may obtain a copy of the License at 72fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * 82fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * http://www.apache.org/licenses/LICENSE-2.0 92fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * 102fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * Unless required by applicable law or agreed to in writing, software 112fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * distributed under the License is distributed on an "AS IS" BASIS, 122fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * See the License for the specific language governing permissions and 142fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * limitations under the License. 152fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa */ 162fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 172fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa#ifndef LATINIME_VER4_PATRICIA_TRIE_NODE_READER_H 182fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa#define LATINIME_VER4_PATRICIA_TRIE_NODE_READER_H 192fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 202fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa#include "defines.h" 2188bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/structure/pt_common/pt_node_params.h" 2288bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/structure/pt_common/pt_node_reader.h" 232fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 242fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasanamespace latinime { 252fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 262fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasaclass BufferWithExtendableBuffer; 2757816c7a8bac1a47913da7a503ece2b5dd7cc0fcKeisuke Kuroyanagiclass HeaderPolicy; 28851e0458fe460526b1f953e39a1e406a21ab4647Keisuke Kuroyanagiclass LanguageModelDictContent; 292fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 302fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa/* 312fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa * This class is used for helping to read nodes of ver4 patricia trie. This class handles moved 32cb4f544198e0592e3e4bb96f1592bc0bd2beb6edKeisuke Kuroyanagi * node and reads node attributes. 332fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa */ 342fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasaclass Ver4PatriciaTrieNodeReader : public PtNodeReader { 352fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa public: 36cb4f544198e0592e3e4bb96f1592bc0bd2beb6edKeisuke Kuroyanagi explicit Ver4PatriciaTrieNodeReader(const BufferWithExtendableBuffer *const buffer) 37cb4f544198e0592e3e4bb96f1592bc0bd2beb6edKeisuke Kuroyanagi : mBuffer(buffer) {} 382fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 392fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa ~Ver4PatriciaTrieNodeReader() {} 402fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 410fbca1ac2388db81a443c1705732130564c3f714Keisuke Kuroyanagi virtual const PtNodeParams fetchPtNodeParamsInBufferFromPtNodePos(const int ptNodePos) const { 422fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa return fetchPtNodeInfoFromBufferAndProcessMovedPtNode(ptNodePos, 432fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa NOT_A_DICT_POS /* siblingNodePos */); 442fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa } 452fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 462fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa private: 472fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa DISALLOW_COPY_AND_ASSIGN(Ver4PatriciaTrieNodeReader); 482fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 492fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa const BufferWithExtendableBuffer *const mBuffer; 502fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa 512fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa const PtNodeParams fetchPtNodeInfoFromBufferAndProcessMovedPtNode(const int ptNodePos, 522fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa const int siblingNodePos) const; 532fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa}; 542fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa} // namespace latinime 552fa3693c264a4c150ac307d9bb7f6f8f18cc4ffcKen Wakasa#endif /* LATINIME_VER4_PATRICIA_TRIE_NODE_READER_H */ 56