ICSharpCode.SharpZipLib.Zip.Compression.DeflaterHuffman.Tree.WriteTree C# (CSharp) Method

WriteTree() public method

Write tree values
public WriteTree ( Tree blTree ) : void
blTree Tree Tree to write
return void
            public void WriteTree(Tree blTree)
            {
                int max_count;               // max repeat count
                int min_count;               // min repeat count
                int count;                   // repeat count of the current code
                int curlen = -1;             // length of current code

                int i = 0;
                while (i < numCodes) {
                    count = 1;
                    int nextlen = length[i];
                    if (nextlen == 0) {
                        max_count = 138;
                        min_count = 3;
                    } else {
                        max_count = 6;
                        min_count = 3;
                        if (curlen != nextlen) {
                            blTree.WriteSymbol(nextlen);
                            count = 0;
                        }
                    }
                    curlen = nextlen;
                    i++;

                    while (i < numCodes && curlen == length[i]) {
                        i++;
                        if (++count >= max_count) {
                            break;
                        }
                    }

                    if (count < min_count) {
                        while (count-- > 0) {
                            blTree.WriteSymbol(curlen);
                        }
                    } else if (curlen != 0) {
                        blTree.WriteSymbol(REP_3_6);
                        dh.pending.WriteBits(count - 3, 2);
                    } else if (count <= 10) {
                        blTree.WriteSymbol(REP_3_10);
                        dh.pending.WriteBits(count - 3, 3);
                    } else {
                        blTree.WriteSymbol(REP_11_138);
                        dh.pending.WriteBits(count - 11, 7);
                    }
                }
            }