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