natix.CompactDS.WaveletTree.Add C# (CSharp) Method

Add() protected method

protected Add ( int symbol ) : void
symbol int
return void
        protected void Add(int symbol)
        {
            var coderstream = new BitStream32 ();
            coderstream.Clear ();
            this.Coder.Encode(coderstream, symbol);
            var ctx = new BitStreamCtx (0);
            // this.CoderStream.Seek (0);
            int numbits = (int)coderstream.CountBits;
            var node = this.Root;
            for (int b = 0; b < numbits; b++) {
                var bitcode = coderstream.Read (ctx);
                (node.B as FakeBitmap).Write (bitcode);
                if (bitcode) {
                    if (numbits == b + 1) {
                        if (node.Right == null) {
                            var leaf = new WT_Leaf (node, symbol);
                            // this.Alphabet.Add (leaf);
                            this.Alphabet [symbol] = leaf;
                            node.Right = leaf;
            //						} else {
            //							(node.Right as WT_Leaf).Increment ();
                        }
                    } else {
                        if (node.Right == null) {
                            node.Right = new WT_Inner (node, true);
                        }
                        node = node.Right as WT_Inner;
                    }
                } else {
                    if (numbits == b + 1) {
                        if (node.Left == null) {
                            var leaf = new WT_Leaf (node, symbol);
                            // this.Alphabet.Add (leaf);
                            this.Alphabet [symbol] = leaf;
                            node.Left = leaf;
            //						} else {
            //							(node.Left as WT_Leaf).Increment ();
                        }
                    } else {
                        if (node.Left == null) {
                            node.Left = new WT_Inner (node, true);
                        }
                        node = node.Left as WT_Inner;
                    }
                }
            }
        }