diff options
Diffstat (limited to 'java/src/com/android/inputmethod/latin/Dictionary.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/Dictionary.java | 63 |
1 files changed, 36 insertions, 27 deletions
diff --git a/java/src/com/android/inputmethod/latin/Dictionary.java b/java/src/com/android/inputmethod/latin/Dictionary.java index 0835450c1..9c3d46e70 100644 --- a/java/src/com/android/inputmethod/latin/Dictionary.java +++ b/java/src/com/android/inputmethod/latin/Dictionary.java @@ -17,9 +17,6 @@ package com.android.inputmethod.latin; import com.android.inputmethod.keyboard.ProximityInfo; -import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo; - -import java.util.ArrayList; /** * Abstract base class for a dictionary that can do a fuzzy search for words based on a set of key @@ -31,43 +28,55 @@ public abstract class Dictionary { */ protected static final int FULL_WORD_SCORE_MULTIPLIER = 2; - public static final int NOT_A_PROBABILITY = -1; - - public static final String TYPE_USER_TYPED = "user_typed"; - public static final String TYPE_APPLICATION_DEFINED = "application_defined"; - public static final String TYPE_HARDCODED = "hardcoded"; // punctuation signs and such - public static final String TYPE_MAIN = "main"; - public static final String TYPE_CONTACTS = "contacts"; - // User dictionary, the system-managed one. - public static final String TYPE_USER = "user"; - // User history dictionary internal to LatinIME. - public static final String TYPE_USER_HISTORY = "history"; - public static final String TYPE_WHITELIST ="whitelist"; - protected final String mDictType; + public static final int UNIGRAM = 0; + public static final int BIGRAM = 1; - public Dictionary(final String dictType) { - mDictType = dictType; + public static final int NOT_A_PROBABILITY = -1; + /** + * Interface to be implemented by classes requesting words to be fetched from the dictionary. + * @see #getWords(WordComposer, CharSequence, WordCallback, ProximityInfo) + */ + public interface WordCallback { + /** + * Adds a word to a list of suggestions. The word is expected to be ordered based on + * the provided score. + * @param word the character array containing the word + * @param wordOffset starting offset of the word in the character array + * @param wordLength length of valid characters in the character array + * @param score the score of occurrence. This is normalized between 1 and 255, but + * can exceed those limits + * @param dicTypeId of the dictionary where word was from + * @param dataType tells type of this data, either UNIGRAM or BIGRAM + * @return true if the word was added, false if no more words are required + */ + boolean addWord(char[] word, int wordOffset, int wordLength, int score, int dicTypeId, + int dataType); } /** * Searches for words in the dictionary that match the characters in the composer. Matched - * words are returned as an ArrayList. - * @param composer the key sequence to match with coordinate info, as a WordComposer + * words are added through the callback object. + * @param composer the key sequence to match * @param prevWordForBigrams the previous word, or null if none + * @param callback the callback object to send matched words to as possible candidates * @param proximityInfo the object for key proximity. May be ignored by some implementations. - * @return the list of suggestions + * @see WordCallback#addWord(char[], int, int, int, int, int) */ - abstract public ArrayList<SuggestedWordInfo> getWords(final WordComposer composer, - final CharSequence prevWordForBigrams, final ProximityInfo proximityInfo); + abstract public void getWords(final WordComposer composer, + final CharSequence prevWordForBigrams, final WordCallback callback, + final ProximityInfo proximityInfo); /** - * Searches for pairs in the bigram dictionary that matches the previous word. + * Searches for pairs in the bigram dictionary that matches the previous word and all the + * possible words following are added through the callback object. * @param composer the key sequence to match * @param previousWord the word before - * @return the list of suggestions + * @param callback the callback object to send possible word following previous word */ - public abstract ArrayList<SuggestedWordInfo> getBigrams(final WordComposer composer, - final CharSequence previousWord); + public void getBigrams(final WordComposer composer, final CharSequence previousWord, + final WordCallback callback) { + // empty base implementation + } /** * Checks if the given word occurs in the dictionary |