public GlyphNode FindWord(GlyphNode current, IList <byte> word, int keyoffset, int keylength) { SearchState pSearchState = SearchState.MIDDLE; for (int i = 0; i < keylength; i++) { byte curGlyph = word[keyoffset + i]; if (pSearchState == SearchState.LOW) { current = current.child_glyphs[0]; } else if (pSearchState == SearchState.HIGH) { current = current.child_glyphs[current.child_glyphs.Count - 1]; } else { if (null == current.child_glyphs) { return(current); } current = current.SelectChild(curGlyph); if (curGlyph > current.Glyph) { pSearchState = SearchState.HIGH; } else if (curGlyph < current.Glyph) { pSearchState = SearchState.LOW; } } } return(current); }
public GlyphNode FindWord(GlyphNode current, IList<byte> word, int keyoffset, int keylength) { SearchState pSearchState = SearchState.MIDDLE; for (int i = 0; i < keylength; i++) { byte curGlyph = word[keyoffset + i]; if (pSearchState == SearchState.LOW) { current = current.child_glyphs[0]; } else if (pSearchState == SearchState.HIGH) { current = current.child_glyphs[current.child_glyphs.Count - 1]; } else { if (null == current.child_glyphs) { return current; } current = current.SelectChild(curGlyph); if (curGlyph > current.Glyph) { pSearchState = SearchState.HIGH; } else if (curGlyph < current.Glyph) { pSearchState = SearchState.LOW; } } } return current; }