11e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi/*
21e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * Copyright (C) 2014, The Android Open Source Project
31e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi *
41e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License");
51e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * you may not use this file except in compliance with the License.
61e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * You may obtain a copy of the License at
71e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi *
81e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi *     http://www.apache.org/licenses/LICENSE-2.0
91e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi *
101e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software
111e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS,
121e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * See the License for the specific language governing permissions and
141e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi * limitations under the License.
151e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi */
161e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
171e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi#ifndef LATINIME_VER2_PATRICIA_TRIE_NODE_READER_H
181e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi#define LATINIME_VER2_PATRICIA_TRIE_NODE_READER_H
191e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
20cafab169cdb21244c82b99c09983c98066113d87Ken Wakasa#include <cstdint>
211e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
221e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi#include "defines.h"
2388bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/structure/pt_common/pt_node_params.h"
2488bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/structure/pt_common/pt_node_reader.h"
256258c57c323e35819262fc0ce0c7ce60ea492b77Keisuke Kuroyanagi#include "utils/byte_array_view.h"
261e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
271e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanaginamespace latinime {
281e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
291e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagiclass DictionaryBigramsStructurePolicy;
301e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagiclass DictionaryShortcutsStructurePolicy;
311e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
321e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagiclass Ver2ParticiaTrieNodeReader : public PtNodeReader {
331e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi public:
346258c57c323e35819262fc0ce0c7ce60ea492b77Keisuke Kuroyanagi    Ver2ParticiaTrieNodeReader(const ReadOnlyByteArrayView buffer,
351e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi            const DictionaryBigramsStructurePolicy *const bigramPolicy,
36fb2bde5a688d93aa946e3dd923aa1e99588777fcAkifumi Yoshimoto            const DictionaryShortcutsStructurePolicy *const shortcutPolicy,
37fb2bde5a688d93aa946e3dd923aa1e99588777fcAkifumi Yoshimoto            const int *const codePointTable)
3844efbe64b1ba44f8edf13a52eca630fce3d7c809Adrian Velicu            : mBuffer(buffer), mBigramPolicy(bigramPolicy), mShortcutPolicy(shortcutPolicy),
39fb2bde5a688d93aa946e3dd923aa1e99588777fcAkifumi Yoshimoto              mCodePointTable(codePointTable) {}
401e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
410fbca1ac2388db81a443c1705732130564c3f714Keisuke Kuroyanagi    virtual const PtNodeParams fetchPtNodeParamsInBufferFromPtNodePos(const int ptNodePos) const;
421e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
431e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi private:
441e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver2ParticiaTrieNodeReader);
451e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi
466258c57c323e35819262fc0ce0c7ce60ea492b77Keisuke Kuroyanagi    const ReadOnlyByteArrayView mBuffer;
471e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi    const DictionaryBigramsStructurePolicy *const mBigramPolicy;
4844efbe64b1ba44f8edf13a52eca630fce3d7c809Adrian Velicu    const DictionaryShortcutsStructurePolicy *const mShortcutPolicy;
49fb2bde5a688d93aa946e3dd923aa1e99588777fcAkifumi Yoshimoto    const int *const mCodePointTable;
501e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi};
511e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi} // namespace latinime
521e2752924d921a9a2a26bf4e72e6db8d4e21982cKeisuke Kuroyanagi#endif /* LATINIME_VER2_PATRICIA_TRIE_NODE_READER_H */
53