1516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi/* 2516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project 3516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * 4516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 5516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * you may not use this file except in compliance with the License. 6516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * You may obtain a copy of the License at 7516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * 8516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 9516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * 10516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 11516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 12516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * See the License for the specific language governing permissions and 14516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * limitations under the License. 15516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi */ 16516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 17516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagipackage com.android.inputmethod.latin.makedict; 18516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 19516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagiimport com.android.inputmethod.annotations.UsedForTesting; 20516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 21516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagiimport java.util.Arrays; 22516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 23516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi/** 24516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * A string with a probability. 25516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * 26516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi * This represents an "attribute", that is either a bigram or a shortcut. 27516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi */ 28516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagipublic final class WeightedString { 29516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi public final String mWord; 30516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi public ProbabilityInfo mProbabilityInfo; 31516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 32516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi public WeightedString(final String word, final int probability) { 33516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi this(word, new ProbabilityInfo(probability)); 34516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi } 35516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 36516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi public WeightedString(final String word, final ProbabilityInfo probabilityInfo) { 37516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi mWord = word; 38516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi mProbabilityInfo = probabilityInfo; 39516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi } 40516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 41516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi @UsedForTesting 42516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi public int getProbability() { 43516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi return mProbabilityInfo.mProbability; 44516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi } 45516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 46516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi public void setProbability(final int probability) { 47516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi mProbabilityInfo = new ProbabilityInfo(probability); 48516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi } 49516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 50516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi @Override 51516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi public int hashCode() { 52516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi return Arrays.hashCode(new Object[] { mWord, mProbabilityInfo}); 53516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi } 54516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi 55516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi @Override 56516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi public boolean equals(Object o) { 57516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi if (o == this) return true; 58516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi if (!(o instanceof WeightedString)) return false; 59516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi final WeightedString w = (WeightedString)o; 60516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi return mWord.equals(w.mWord) && mProbabilityInfo.equals(w.mProbabilityInfo); 61516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi } 62516f86815ddec465e3d3ff59540d26913b05236fKeisuke Kuroyanagi}