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 17e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi#ifndef LATINIME_WORD_PROPERTY_H 18e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi#define LATINIME_WORD_PROPERTY_H 19e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 20e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi#include <vector> 21e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 22e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi#include "defines.h" 2388bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/property/ngram_property.h" 2488bc312ad34321fb3e81be2dc939a889d065f4a7Keisuke Kuroyanagi#include "dictionary/property/unigram_property.h" 25bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi#include "utils/int_array_view.h" 26e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 27e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanaginamespace latinime { 28e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 29e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi// This class is used for returning information belonging to a word to java side. 30e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagiclass WordProperty { 31e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi public: 32e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi // Default constructor is used to create an instance that indicates an invalid word. 33e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi WordProperty() 3479bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagi : mCodePoints(), mUnigramProperty(), mNgrams() {} 35e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 36bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi WordProperty(const std::vector<int> &&codePoints, const UnigramProperty &unigramProperty, 37bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi const std::vector<NgramProperty> &ngrams) 38bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi : mCodePoints(std::move(codePoints)), mUnigramProperty(unigramProperty), 39bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi mNgrams(ngrams) {} 40e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 41bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi const CodePointArrayView getCodePoints() const { 42bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi return CodePointArrayView(mCodePoints); 438a9d9de72a9ab02cb4726c205213d4f0b9f58e07Keisuke Kuroyanagi } 448a9d9de72a9ab02cb4726c205213d4f0b9f58e07Keisuke Kuroyanagi 45bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi const UnigramProperty &getUnigramProperty() const { 46bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi return mUnigramProperty; 47bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi } 48bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi 49bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi const std::vector<NgramProperty> &getNgramProperties() const { 50bbf0d4141bf4c5ee1026a8dfe45d46a416ad35b1Keisuke Kuroyanagi return mNgrams; 518a9d9de72a9ab02cb4726c205213d4f0b9f58e07Keisuke Kuroyanagi } 528a9d9de72a9ab02cb4726c205213d4f0b9f58e07Keisuke Kuroyanagi 53e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi private: 54e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi // Default copy constructor is used for using as a return value. 55e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi DISALLOW_ASSIGNMENT_OPERATOR(WordProperty); 56e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi 57e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi const std::vector<int> mCodePoints; 58e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi const UnigramProperty mUnigramProperty; 5979bb37d499ed6fcabe981153d5ff0b5b69509933Keisuke Kuroyanagi const std::vector<NgramProperty> mNgrams; 60e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi}; 61e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi} // namespace latinime 62e41b2ed8d31b84308f77a0bd14c5eecc5a17960aKeisuke Kuroyanagi#endif // LATINIME_WORD_PROPERTY_H 63