aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/Dictionary.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin/Dictionary.java')
-rw-r--r--java/src/com/android/inputmethod/latin/Dictionary.java63
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