iTextSharp.text.pdf.hyphenation.HyphenationTree.SearchPatterns C# (CSharp) Метод

SearchPatterns() защищенный Метод

protected SearchPatterns ( char word, int index, byte il ) : void
word char
index int
il byte
Результат void
        protected void SearchPatterns(char[] word, int index, byte[] il)
        {
            byte[] values;
            int i = index;
            char p, q;
            char sp = word[i];
            p = root;

            while (p > 0 && p < sc.Length) {
                if (sc[p] == 0xFFFF) {
                    if (Hstrcmp(word, i, kv.Arr, lo[p]) == 0) {
                        values = GetValues(eq[p]);    // data pointer is in eq[]
                        int j = index;
                        for (int k = 0; k < values.Length; k++) {
                            if (j < il.Length && values[k] > il[j]) {
                                il[j] = values[k];
                            }
                            j++;
                        }
                    }
                    return;
                }
                int d = sp - sc[p];
                if (d == 0) {
                    if (sp == 0) {
                        break;
                    }
                    sp = word[++i];
                    p = eq[p];
                    q = p;

                    // look for a pattern ending at this position by searching for
                    // the null char ( splitchar == 0 )
                    while (q > 0 && q < sc.Length) {
                        if (sc[q] == 0xFFFF) {        // stop at compressed branch
                            break;
                        }
                        if (sc[q] == 0) {
                            values = GetValues(eq[q]);
                            int j = index;
                            for (int k = 0; k < values.Length; k++) {
                                if (j < il.Length && values[k] > il[j]) {
                                    il[j] = values[k];
                                }
                                j++;
                            }
                            break;
                        } else {
                            q = lo[q];

                            /**
                            * actually the code should be:
                            * q = sc[q] < 0 ? hi[q] : lo[q];
                            * but java chars are unsigned
                            */
                        }
                    }
                } else {
                    p = d < 0 ? lo[p] : hi[p];
                }
            }
        }