1e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi/* 2e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project 3e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * 4e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 5e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * you may not use this file except in compliance with the License. 6e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * You may obtain a copy of the License at 7e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * 8e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 9e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * 10e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 11e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 12e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * See the License for the specific language governing permissions and 14e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi * limitations under the License. 15e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi */ 16e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 1779bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagi#ifndef LATINIME_NGRAM_PROPERTY_H 1879bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagi#define LATINIME_NGRAM_PROPERTY_H 19e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 20e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi#include <vector> 21e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 22e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi#include "defines.h" 2388bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/property/historical_info.h" 2488bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/property/ngram_context.h" 25e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 26e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanaginamespace latinime { 27e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 2879bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagiclass NgramProperty { 29e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi public: 3088bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi NgramProperty(const NgramContext &ngramContext, const std::vector<int> &&targetCodePoints, 3188bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi const int probability, const HistoricalInfo historicalInfo) 3288bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi : mNgramContext(ngramContext), mTargetCodePoints(std::move(targetCodePoints)), 3388bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi mProbability(probability), mHistoricalInfo(historicalInfo) {} 3488bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi 3588bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi const NgramContext *getNgramContext() const { 3688bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi return &mNgramContext; 3788bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi } 38e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 39e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi const std::vector<int> *getTargetCodePoints() const { 40e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi return &mTargetCodePoints; 41e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi } 42e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 43e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi int getProbability() const { 44e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi return mProbability; 45e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi } 46e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 47287e155e44b4e937f2a62d010805702bc813c43bKeisuke Kuroyanagi const HistoricalInfo getHistoricalInfo() const { 48287e155e44b4e937f2a62d010805702bc813c43bKeisuke Kuroyanagi return mHistoricalInfo; 49e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi } 50e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 51e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi private: 52620ebde70490473fd3562f70d1f24d7d53b6fb1cKeisuke Kuroyanagi // Default copy constructor is used for using in std::vector. 5379bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagi DISALLOW_DEFAULT_CONSTRUCTOR(NgramProperty); 54620ebde70490473fd3562f70d1f24d7d53b6fb1cKeisuke Kuroyanagi DISALLOW_ASSIGNMENT_OPERATOR(NgramProperty); 55e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 5688bb28c132d87f15a52e9a0b8a45950f39eb19adKeisuke Kuroyanagi const NgramContext mNgramContext; 57620ebde70490473fd3562f70d1f24d7d53b6fb1cKeisuke Kuroyanagi const std::vector<int> mTargetCodePoints; 58620ebde70490473fd3562f70d1f24d7d53b6fb1cKeisuke Kuroyanagi const int mProbability; 59620ebde70490473fd3562f70d1f24d7d53b6fb1cKeisuke Kuroyanagi const HistoricalInfo mHistoricalInfo; 60e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi}; 61e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi} // namespace latinime 6279bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagi#endif // LATINIME_NGRAM_PROPERTY_H 63