prev_words_info.h revision b94ec1437b624a45ad5c0fde2dd385116e5e1163
1b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi/* 2b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project 3b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * 4b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 5b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * you may not use this file except in compliance with the License. 6b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * You may obtain a copy of the License at 7b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * 8b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 9b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * 10b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 11b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 12b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * See the License for the specific language governing permissions and 14b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi * limitations under the License. 15b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi */ 16b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi 17b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi#ifndef LATINIME_PREV_WORDS_INFO_H 18b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi#define LATINIME_PREV_WORDS_INFO_H 19b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi 20b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi#include "defines.h" 21b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi 22b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanaginamespace latinime { 23b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi 24b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi// TODO: Support n-gram. 25b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi// TODO: Support beginning of sentence. 26b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi// This class does not take ownership of any code point buffers. 27b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagiclass PrevWordsInfo { 28b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi public: 29b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi // No prev word information. 30b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi PrevWordsInfo() { 31b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi clear(); 32b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi } 33b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi 34b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi PrevWordsInfo(const int *const prevWordCodePoints, const int prevWordCodePointCount, 35b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi const bool isBeginningOfSentence) { 36b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi clear(); 37b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi mPrevWordCodePoints[0] = prevWordCodePoints; 38b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi mPrevWordCodePointCount[0] = prevWordCodePointCount; 39b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi mIsBeginningOfSentence[0] = isBeginningOfSentence; 40b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi } 41b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi const int *getPrevWordCodePoints() const { 42b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi return mPrevWordCodePoints[0]; 43b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi } 44b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi 45b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi int getPrevWordCodePointCount() const { 46b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi return mPrevWordCodePointCount[0]; 47b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi } 48b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi 49b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi private: 50b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi DISALLOW_COPY_AND_ASSIGN(PrevWordsInfo); 51b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi 52b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi void clear() { 53b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi for (size_t i = 0; i < NELEMS(mPrevWordCodePoints); ++i) { 54b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi mPrevWordCodePoints[i] = nullptr; 55b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi mPrevWordCodePointCount[i] = 0; 56b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi mIsBeginningOfSentence[i] = false; 57b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi } 58b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi } 59b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi 60b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi const int *mPrevWordCodePoints[MAX_PREV_WORD_COUNT_FOR_N_GRAM]; 61b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi int mPrevWordCodePointCount[MAX_PREV_WORD_COUNT_FOR_N_GRAM]; 62b94ec1437b624a45ad5c0fde2dd385116e5e1163Keisuke Kuroyanagi bool mIsBeginningOfSentence[MAX_PREV_WORD_COUNT_FOR_N_GRAM]; 63b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi}; 64b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi} // namespace latinime 65b87fffb8be3dc6a79e49890a7700704d7fee616bKeisuke Kuroyanagi#endif // LATINIME_PREV_WORDS_INFO_H 66