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

BuildCodes() public method

Build dynamic codes and lengths
public BuildCodes ( ) : void
return void
            public void BuildCodes()
            {
                int numSymbols = freqs.Length;
                int[] nextCode = new int[maxLength];
                int code = 0;

                codes = new short[freqs.Length];

                //				if (DeflaterConstants.DEBUGGING) {
                //					//Console.WriteLine("buildCodes: "+freqs.Length);
                //				}

                for (int bits = 0; bits < maxLength; bits++) {
                    nextCode[bits] = code;
                    code += bl_counts[bits] << (15 - bits);

                    //					if (DeflaterConstants.DEBUGGING) {
                    //						//Console.WriteLine("bits: " + ( bits + 1) + " count: " + bl_counts[bits]
                    //						                  +" nextCode: "+code);
                    //					}
                }

                #if DebugDeflation
                if ( DeflaterConstants.DEBUGGING && (code != 65536) )
                {
                    throw new SharpZipBaseException("Inconsistent bl_counts!");
                }
                #endif
                for (int i = 0; i < numCodes; i++) {
                    int bits = length[i];
                    if (bits > 0) {

                        //						if (DeflaterConstants.DEBUGGING) {
                        //								//Console.WriteLine("codes["+i+"] = rev(" + nextCode[bits-1]+"),
                        //								                  +bits);
                        //						}

                        codes[i] = BitReverse(nextCode[bits - 1]);
                        nextCode[bits - 1] += 1 << (16 - bits);
                    }
                }
            }