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