Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1150889 authored by Amith Yamasani's avatar Amith Yamasani Committed by Jean-Baptiste Queru
Browse files

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

Add lowercase optimization to user dictionary as well.
parent 4dfe7996
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -147,17 +147,15 @@ 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);
    }
    }
    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;
+1 −1
Original line number Diff line number Diff line
@@ -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);
+5 −1
Original line number Diff line number Diff line
@@ -250,7 +250,11 @@ public class ExpandableDictionary extends Dictionary {
        if (c < BASE_CHARS.length) {
            c = BASE_CHARS[c];
        }
        if (c >= 'A' && c <= 'Z') {
            c = (char) (c | 32);
        } else {
            c = Character.toLowerCase(c);
        }
        return c;
    }