diff options
author | 2009-08-07 14:04:24 -0700 | |
---|---|---|
committer | 2009-08-13 18:03:07 -0700 | |
commit | f115088924ae24d78b468c52a9bb10dc3ae6aae0 (patch) | |
tree | 1cfa0b0f7c513df3cb18eb955a0b7745e66332ee | |
parent | 4dfe7996029f7c6a96dc7184cfd0c25e3e0b1ae8 (diff) | |
download | latinime-f115088924ae24d78b468c52a9bb10dc3ae6aae0.tar.gz latinime-f115088924ae24d78b468c52a9bb10dc3ae6aae0.tar.xz latinime-f115088924ae24d78b468c52a9bb10dc3ae6aae0.zip |
Allow for non-starting letters to be upper case in dictionary lookup.
Add lowercase optimization to user dictionary as well.
-rw-r--r-- | dictionary/src/dictionary.cpp | 14 | ||||
-rw-r--r-- | dictionary/src/dictionary.h | 2 | ||||
-rw-r--r-- | src/com/android/inputmethod/latin/ExpandableDictionary.java | 6 |
3 files changed, 12 insertions, 10 deletions
diff --git a/dictionary/src/dictionary.cpp b/dictionary/src/dictionary.cpp index 02843abc2..8db5f12e7 100644 --- a/dictionary/src/dictionary.cpp +++ b/dictionary/src/dictionary.cpp @@ -147,16 +147,14 @@ Dictionary::addWord(unsigned short *word, int length, int frequency) } unsigned short -Dictionary::toLowerCase(unsigned short c, const int depth) { +Dictionary::toLowerCase(unsigned short c) { if (c < sizeof(BASE_CHARS) / sizeof(BASE_CHARS[0])) { c = BASE_CHARS[c]; } - if (depth == 0) { - if (c >='A' && c <= 'Z') { - c |= 32; - } else if (c > 127) { - c = u_tolower(c); - } + if (c >='A' && c <= 'Z') { + c |= 32; + } else if (c > 127) { + c = u_tolower(c); } return c; } @@ -201,7 +199,7 @@ Dictionary::getWordsRec(int pos, int depth, int maxDepth, bool completion, int s for (int i = 0; i < count; i++) { unsigned short c = getChar(&pos); - unsigned short lowerC = toLowerCase(c, depth); + unsigned short lowerC = toLowerCase(c); bool terminal = getTerminal(&pos); int childrenAddress = getAddress(&pos); int freq = 1; diff --git a/dictionary/src/dictionary.h b/dictionary/src/dictionary.h index 9173e39b0..8f195ca9a 100644 --- a/dictionary/src/dictionary.h +++ b/dictionary/src/dictionary.h @@ -49,7 +49,7 @@ private: bool sameAsTyped(unsigned short *word, int length); bool addWord(unsigned short *word, int length, int frequency); - unsigned short toLowerCase(unsigned short c, int depth); + unsigned short toLowerCase(unsigned short c); void getWordsRec(int pos, int depth, int maxDepth, bool completion, int frequency, int inputIndex, int diffs); bool isValidWordRec(int pos, unsigned short *word, int offset, int length); diff --git a/src/com/android/inputmethod/latin/ExpandableDictionary.java b/src/com/android/inputmethod/latin/ExpandableDictionary.java index 3f20783e4..c32796e57 100644 --- a/src/com/android/inputmethod/latin/ExpandableDictionary.java +++ b/src/com/android/inputmethod/latin/ExpandableDictionary.java @@ -250,7 +250,11 @@ public class ExpandableDictionary extends Dictionary { if (c < BASE_CHARS.length) { c = BASE_CHARS[c]; } - c = Character.toLowerCase(c); + if (c >= 'A' && c <= 'Z') { + c = (char) (c | 32); + } else { + c = Character.toLowerCase(c); + } return c; } |