Ejemplo n.º 1
0
        private void WriteRecursively(DataOutput @out, JaspellTernarySearchTrie.TSTNode node)
        {
            if (node == null)
            {
                return;
            }
            @out.WriteString(new string(new char[] { node.splitchar }, 0, 1));
            sbyte mask = 0;

            if (node.relatives[JaspellTernarySearchTrie.TSTNode.LOKID] != null)
            {
                mask |= LO_KID;
            }
            if (node.relatives[JaspellTernarySearchTrie.TSTNode.EQKID] != null)
            {
                mask |= EQ_KID;
            }
            if (node.relatives[JaspellTernarySearchTrie.TSTNode.HIKID] != null)
            {
                mask |= HI_KID;
            }
            if (node.data != null)
            {
                mask |= HAS_VALUE;
            }
            @out.WriteByte((byte)mask);
            if (node.data != null)
            {
                @out.WriteInt64((long)(node.data));
            }
            WriteRecursively(@out, node.relatives[JaspellTernarySearchTrie.TSTNode.LOKID]);
            WriteRecursively(@out, node.relatives[JaspellTernarySearchTrie.TSTNode.EQKID]);
            WriteRecursively(@out, node.relatives[JaspellTernarySearchTrie.TSTNode.HIKID]);
        }
Ejemplo n.º 2
0
        private void ReadRecursively(DataInput @in, JaspellTernarySearchTrie.TSTNode node)
        {
            node.splitchar = @in.ReadString()[0];
            sbyte mask = (sbyte)@in.ReadByte();

            if ((mask & HAS_VALUE) != 0)
            {
                node.data = @in.ReadInt64();
            }
            if ((mask & LO_KID) != 0)
            {
                var kid = new JaspellTernarySearchTrie.TSTNode('\0', node);
                node.relatives[JaspellTernarySearchTrie.TSTNode.LOKID] = kid;
                ReadRecursively(@in, kid);
            }
            if ((mask & EQ_KID) != 0)
            {
                var kid = new JaspellTernarySearchTrie.TSTNode('\0', node);
                node.relatives[JaspellTernarySearchTrie.TSTNode.EQKID] = kid;
                ReadRecursively(@in, kid);
            }
            if ((mask & HI_KID) != 0)
            {
                var kid = new JaspellTernarySearchTrie.TSTNode('\0', node);
                node.relatives[JaspellTernarySearchTrie.TSTNode.HIKID] = kid;
                ReadRecursively(@in, kid);
            }
        }
Ejemplo n.º 3
0
        private void ReadRecursively(DataInput @in, JaspellTernarySearchTrie.TSTNode node)
        {
            node.splitchar = @in.ReadString().charAt(0);
            sbyte mask = @in.ReadByte();

            if ((mask & HAS_VALUE) != 0)
            {
                node.data = Convert.ToInt64(@in.readLong());
            }
            if ((mask & LO_KID) != 0)
            {
                JaspellTernarySearchTrie.TSTNode kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node);
                node.relatives[JaspellTernarySearchTrie.TSTNode.LOKID] = kid;
                ReadRecursively(@in, kid);
            }
            if ((mask & EQ_KID) != 0)
            {
                JaspellTernarySearchTrie.TSTNode kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node);
                node.relatives[JaspellTernarySearchTrie.TSTNode.EQKID] = kid;
                ReadRecursively(@in, kid);
            }
            if ((mask & HI_KID) != 0)
            {
                JaspellTernarySearchTrie.TSTNode kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node);
                node.relatives[JaspellTernarySearchTrie.TSTNode.HIKID] = kid;
                ReadRecursively(@in, kid);
            }
        }
Ejemplo n.º 4
0
 public override bool load(DataInput input)
 {
     count = input.ReadVLong();
     JaspellTernarySearchTrie.TSTNode root = new JaspellTernarySearchTrie.TSTNode(trie, '\0', null);
     ReadRecursively(input, root);
     trie.Root = root;
     return(true);
 }
Ejemplo n.º 5
0
 public override bool Store(DataOutput output)
 {
     output.WriteVInt64(count);
     JaspellTernarySearchTrie.TSTNode root = trie.Root;
     if (root == null) // empty tree
     {
         return(false);
     }
     WriteRecursively(output, root);
     return(true);
 }
Ejemplo n.º 6
0
 private void ReadRecursively(DataInput @in, JaspellTernarySearchTrie.TSTNode node)
 {
     node.splitchar = @in.ReadString()[0];
     sbyte mask = (sbyte)@in.ReadByte();
     if ((mask & HAS_VALUE) != 0)
     {
         node.data = Convert.ToInt64(@in.ReadLong());
     }
     if ((mask & LO_KID) != 0)
     {
         var kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node);
         node.relatives[JaspellTernarySearchTrie.TSTNode.LOKID] = kid;
         ReadRecursively(@in, kid);
     }
     if ((mask & EQ_KID) != 0)
     {
         var kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node);
         node.relatives[JaspellTernarySearchTrie.TSTNode.EQKID] = kid;
         ReadRecursively(@in, kid);
     }
     if ((mask & HI_KID) != 0)
     {
         var kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node);
         node.relatives[JaspellTernarySearchTrie.TSTNode.HIKID] = kid;
         ReadRecursively(@in, kid);
     }
 }
Ejemplo n.º 7
0
 public override bool Load(DataInput input)
 {
     count = input.ReadVLong();
     var root = new JaspellTernarySearchTrie.TSTNode(trie, '\0', null);
     ReadRecursively(input, root);
     trie.Root = root;
     return true;
 }