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

CompressBlock() public method

Compress current buffer writing data to pending buffer
public CompressBlock ( ) : void
return void
        public void CompressBlock()
        {
            for (int i = 0; i < last_lit; i++) {
                int litlen = l_buf[i] & 0xff;
                int dist = d_buf[i];
                if (dist-- != 0) {
                    //					if (DeflaterConstants.DEBUGGING) {
                    //						Console.Write("["+(dist+1)+","+(litlen+3)+"]: ");
                    //					}

                    int lc = Lcode(litlen);
                    literalTree.WriteSymbol(lc);

                    int bits = (lc - 261) / 4;
                    if (bits > 0 && bits <= 5) {
                        pending.WriteBits(litlen & ((1 << bits) - 1), bits);
                    }

                    int dc = Dcode(dist);
                    distTree.WriteSymbol(dc);

                    bits = dc / 2 - 1;
                    if (bits > 0) {
                        pending.WriteBits(dist & ((1 << bits) - 1), bits);
                    }
                } else {
                    //					if (DeflaterConstants.DEBUGGING) {
                    //						if (litlen > 32 && litlen < 127) {
                    //							Console.Write("("+(char)litlen+"): ");
                    //						} else {
                    //							Console.Write("{"+litlen+"}: ");
                    //						}
                    //					}
                    literalTree.WriteSymbol(litlen);
                }
            }

            #if DebugDeflation
            if (DeflaterConstants.DEBUGGING) {
                Console.Write("EOF: ");
            }
            #endif
            literalTree.WriteSymbol(EOF_SYMBOL);

            #if DebugDeflation
            if (DeflaterConstants.DEBUGGING) {
                literalTree.CheckEmpty();
                distTree.CheckEmpty();
            }
            #endif
        }