コード例 #1
0
        public override RangeNode Distro(IList <byte> key, int keyoffset, int keylength)
        {
            RangeNode rn;

            if (tree.child_glyphs == null)
            {
                rn.MajorID = tree.iMajorId;
                rn.MinorID = tree.iMinorId;
                return(rn);
            }

            if (keylength != m_iSampleKeyLength)
            {
                throw new Exception("Key length not of expected size (expected " + m_iSampleKeyLength.ToString() + ", got " + keylength.ToString() + ")");
            }
            if (keyoffset + keylength > key.Count)
            {
                throw new Exception("Key buffer of size " + key.Count.ToString() + " not big enough to hold key of length " + keylength.ToString() + " at offset " + keyoffset.ToString());
            }
            if (keyoffset < 0 || keylength < 0)
            {
                throw new Exception("Key buffer of size " + key.Count.ToString() + " not big enough to hold key of BAD length " + keylength.ToString() + " at BAD offset " + keyoffset.ToString());
            }
            GlyphNode gn = tree.FindWord(tree, key, keyoffset, keylength);

            rn.MajorID = gn.iMajorId;
            rn.MinorID = gn.iMinorId;
            return(rn);
        }