1e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi/* 2e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project 3e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * 4e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 5e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * you may not use this file except in compliance with the License. 6e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * You may obtain a copy of the License at 7e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * 8e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 9e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * 10e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 11e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 12e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * See the License for the specific language governing permissions and 14e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi * limitations under the License. 15e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi */ 16e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 17e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi#ifndef LATINIME_SUGGESTED_WORD_H 18e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi#define LATINIME_SUGGESTED_WORD_H 19e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 20e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi#include <vector> 21e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 22e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi#include "defines.h" 23e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi#include "suggest/core/dictionary/dictionary.h" 24e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 25e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanaginamespace latinime { 26e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 27e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagiclass SuggestedWord { 28e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi public: 29e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi class Comparator { 30e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi public: 31e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi bool operator()(const SuggestedWord &left, const SuggestedWord &right) { 32e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi if (left.getScore() != right.getScore()) { 335dc17c22ca88cf1dcf2225d8b252bcfa8c84d364Keisuke Kuroyanagi return left.getScore() > right.getScore(); 34e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi } 355dc17c22ca88cf1dcf2225d8b252bcfa8c84d364Keisuke Kuroyanagi return left.getCodePointCount() < right.getCodePointCount(); 36e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi } 37e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 38e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi private: 39e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi DISALLOW_ASSIGNMENT_OPERATOR(Comparator); 40e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi }; 41e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 42e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi SuggestedWord(const int *const codePoints, const int codePointCount, 43e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi const int score, const int type, const int indexToPartialCommit, 44e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi const int autoCommitFirstWordConfidence) 45e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi : mCodePoints(codePoints, codePoints + codePointCount), mScore(score), 46e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi mType(type), mIndexToPartialCommit(indexToPartialCommit), 47e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi mAutoCommitFirstWordConfidence(autoCommitFirstWordConfidence) {} 48e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 49e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi const int *getCodePoint() const { 50e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi return &mCodePoints.at(0); 51e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi } 52e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 53e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int getCodePointCount() const { 54e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi return mCodePoints.size(); 55e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi } 56e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 57e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int getScore() const { 58e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi return mScore; 59e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi } 60e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 61e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int getType() const { 62e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi return mType; 63e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi } 64e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 65e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int getIndexToPartialCommit() const { 66e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi return mIndexToPartialCommit; 67e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi } 68e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 69e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int getAutoCommitFirstWordConfidence() const { 70e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi return mAutoCommitFirstWordConfidence; 71e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi } 72e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 73e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi private: 74e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi DISALLOW_DEFAULT_CONSTRUCTOR(SuggestedWord); 75e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi 76e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi std::vector<int> mCodePoints; 77e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int mScore; 78e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int mType; 79e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int mIndexToPartialCommit; 80e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi int mAutoCommitFirstWordConfidence; 81e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi}; 82e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi} // namespace latinime 83e137ec0a91cf93b0a99fd1e1556ee835d026f731Keisuke Kuroyanagi#endif /* LATINIME_SUGGESTED_WORD_H */ 84