11d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi/*
21d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * Copyright (C) 2014, The Android Open Source Project
31d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi *
41d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License");
51d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * you may not use this file except in compliance with the License.
61d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * You may obtain a copy of the License at
71d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi *
81d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi *     http://www.apache.org/licenses/LICENSE-2.0
91d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi *
101d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software
111d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS,
121d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * See the License for the specific language governing permissions and
141d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi * limitations under the License.
151d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi */
161d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi
171d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi#ifndef LATINIME_VER4_PT_NODE_ARRAY_READER_H
181d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi#define LATINIME_VER4_PT_NODE_ARRAY_READER_H
191d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi
201d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi#include "defines.h"
2188bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/structure/pt_common/pt_node_array_reader.h"
221d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi
231d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanaginamespace latinime {
241d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi
251d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagiclass BufferWithExtendableBuffer;
261d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi
271d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagiclass Ver4PtNodeArrayReader : public PtNodeArrayReader {
281d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi public:
291d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi    Ver4PtNodeArrayReader(const BufferWithExtendableBuffer *const buffer) : mBuffer(buffer) {};
301d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi
311d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi    virtual bool readPtNodeArrayInfoAndReturnIfValid(const int ptNodeArrayPos,
321d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi            int *const outPtNodeCount, int *const outFirstPtNodePos) const;
331d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi    virtual bool readForwardLinkAndReturnIfValid(const int forwordLinkPos,
341d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi            int *const outNextPtNodeArrayPos) const;
351d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi
361d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi private:
371d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi    DISALLOW_COPY_AND_ASSIGN(Ver4PtNodeArrayReader);
381d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi
391d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi    const BufferWithExtendableBuffer *const mBuffer;
401d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi};
411d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi} // namespace latinime
421d6afa179cd31010efe28f1c3e17698d6be79cabKeisuke Kuroyanagi#endif /* LATINIME_VER4_PT_NODE_ARRAY_READER_H */
43