Allow for non-starting letters to be upper case in dictionary lookup.

Add lowercase optimization to user dictionary as well.
main
Amith Yamasani 2009-08-07 14:04:24 -07:00 committed by Jean-Baptiste Queru
parent 4dfe799602
commit f115088924
3 changed files with 12 additions and 10 deletions

View File

@ -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;

View File

@ -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);

View File

@ -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;
}