aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2009-08-07 14:04:24 -0700
committerJean-Baptiste Queru <jbq@google.com>2009-08-13 18:03:07 -0700
commitf115088924ae24d78b468c52a9bb10dc3ae6aae0 (patch)
tree1cfa0b0f7c513df3cb18eb955a0b7745e66332ee
parent4dfe7996029f7c6a96dc7184cfd0c25e3e0b1ae8 (diff)
downloadlatinime-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.cpp14
-rw-r--r--dictionary/src/dictionary.h2
-rw-r--r--src/com/android/inputmethod/latin/ExpandableDictionary.java6
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;
}