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