Dear All,
     I met a big difficiult problem, i have researched more then 5
day's. Of course i read the LatinIME's algorithm for the suggestion.
It following like that

getSuggestions-->getWordsRec, and getWordsRec invoke itself when it
have a child. So the key algorithm is where is it's child.And it is:
intDictionary::getAddress(int *pos) // the pos is a father node
{
    int address = 0;
    if ((mDict[*pos] & FLAG_ADDRESS_MASK) == 0) { //// The bit that
decides if an address follows in the next 22 bits

                        //       #define FLAG_ADDRESS_MASK 0x40

                        // 22-bit address = ~4MB dictionary size
limit, which on average would be about 200k-300k words

        *pos += 1;  // so it looks never go into this branch when the
dictionay is less then 4MB, and my dictionary is only 500KB
    } else {
        address += (mDict[*pos] & (ADDRESS_MASK >> 16)) << 16;  //
        address += (mDict[*pos + 1] & 0xFF) << 8;
              //
        address += (mDict[*pos + 2] & 0xFF);
                  //
        *pos += 3;
    }
    return address; //the address is child node's
}
For example, we typed "as", the first node is find the "a" at the root
layler, and then find "s" on the "a" child.
Anyone can tell me what's the getAddress() meanings? i really can't
understand it well. My question is why
the child address is always :

        address += (mDict[*pos] & (ADDRESS_MASK >> 16)) << 16;  //
        address += (mDict[*pos + 1] & 0xFF) << 8;
              //
        address += (mDict[*pos + 2] & 0xFF);
                  //

If the "a" have more then two child, it will only get one child,
because it always get it's child address like above.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

To unsubscribe from this group, send email to 
android-developers+unsubscribegooglegroups.com or reply to this email with the 
words "REMOVE ME" as the subject.

Reply via email to