Example #1
0
	public Decompressor (InputBuffer input, OutputBuffer output)
	: base (input, output)
	{
		/* Check the magic number */
		if (((input.ReadByte () & 0xFF) != (Compress.magic_header [0] & 0xFF)) || ((input.ReadByte () & 0xFF) != (Compress.magic_header [1] & 0xFF)))
			Console.Error.WriteLine ("stdin: not in compressed format");

		maxBits = input.ReadByte (); /* set -b from file */
		blockCompress = maxBits & Compress.BLOCK_MASK;
		maxBits &= Compress.BIT_MASK;
		maxMaxCode = 1 << maxBits;
		if (maxBits > Compress.BITS)
			Console.Error.WriteLine ("stdin: compressed with " + maxBits + " bits, can only handle " + Compress.BITS + " bits");
		bitsNumber = Compress.INIT_BITS;
		maxCode = MaxCode;

		offset = 0;
		size = 0;
		clearFlag = 0;
		freeEntry = ((blockCompress != 0) ? Compress.FIRST : 256);

		tabPrefix = new CodeTable ();
		tabSuffix = new SuffixTable ();
		deStack = new DeStack ();

		/*
		 * As above, initialize the first 256 entries in the table.
		 */
		tabPrefix.Clear (256);
		tabSuffix.Init (256);
	}
Example #2
0
	public CompBase (InputBuffer input, OutputBuffer output)
	{
		this.input = input;
		this.output = output;
		maxBits = Compress.BITS;
		blockCompress = Compress.BLOCK_MASK;
		buf = new byte [Compress.BITS];
	}
Example #3
0
	public Compressor (InputBuffer input, OutputBuffer output)
	: base (input, output)
	{
		if (maxBits < Benchmark.Compress.INIT_BITS)
			maxBits = Benchmark.Compress.INIT_BITS;
		if (maxBits > Benchmark.Compress.BITS)
			maxBits = Benchmark.Compress.BITS;
		maxMaxCode = 1 << maxBits;
		bitsNumber = Benchmark.Compress.INIT_BITS;
		maxCode = MaxCode;

		offset = 0;
		bytesOut = 3; /* includes 3-byte header mojo */
		outCount = 0;
		clearFlag = 0;
		ratio = 0;
		inCount = 1;
		checkpoint = CHECK_GAP;
		freeEntry = ((blockCompress != 0) ? Benchmark.Compress.FIRST : 256);

		htab = new HashTable (); // dm/kmd 4/10/98
		codetab = new CodeTable ();

		output.WriteByte (Benchmark.Compress.magic_header [0]);
		output.WriteByte (Benchmark.Compress.magic_header [1]);
		output.WriteByte ((byte) (maxBits | blockCompress));
	}
Example #4
0
	public static OutputBuffer PerformAction (byte [] src, int srcLength, int action, byte [] dst)
	{
		InputBuffer input = new InputBuffer (srcLength, src);
		OutputBuffer output = new OutputBuffer (dst);
		if (action == COMPRESS)
		{
			new Compressor (input, output).Compress ();
		}
		else
		{
			new Decompressor (input, output).Decompress ();
		}
		return output;
	}