e32tools/e32lib/e32image/deflate/huffman.h
changeset 37 863e2b34c16d
parent 36 3141a18cb091
parent 35 32228a6e07c0
child 38 620772202a07
--- a/e32tools/e32lib/e32image/deflate/huffman.h	Thu Nov 04 09:25:46 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// e32tools\petran\Szip\huffman.h
-// 
-//
-
-#ifndef __HUFFMAN_H__
-#define __HUFFMAN_H__
-
-#include <e32std.h>
-
-/** Bit output stream.
-	Good for writing bit streams for packed, compressed or huffman data algorithms.
-
-	This class must be derived from and OverflowL() reimplemented if the bitstream data
-	cannot be generated into a single memory buffer.
-
-	@since 8.0
-	@library euser.lib
-*/
-class TBitOutput
-	{
-public:
-	TBitOutput();
-	TBitOutput(TUint8* aBuf,TInt aSize);
-	inline virtual ~TBitOutput() { } 
-	inline void Set(TUint8* aBuf,TInt aSize);
-	inline const TUint8* Ptr() const;
-	inline TInt BufferedBits() const;
-//
-	void WriteL(TUint aValue, TInt aLength);
-	void HuffmanL(TUint aHuffCode);
-	void PadL(TUint aPadding);
-private:
-	void DoWriteL(TUint aBits, TInt aSize);
-	virtual void OverflowL();
-private:
-	TUint iCode;		// code in production
-	TInt iBits;
-	TUint8* iPtr;
-	TUint8* iEnd;
-	};
-
-/** Set the memory buffer to use for output
-
-	Data will be written to this buffer until it is full, at which point OverflowL() will
-	be called. This should handle the data and then can Set() again to reset the buffer
-	for further output.
-	
-	@param "TUint8* aBuf" The buffer for output
-	@param "TInt aSize" The size of the buffer in bytes
-*/
-inline void TBitOutput::Set(TUint8* aBuf,TInt aSize)
-	{iPtr=aBuf;iEnd=aBuf+aSize;}
-/** Get the current write position in the output buffer
-
-	In conjunction with the address of the buffer, which should be known to the
-	caller, this describes the data in the bitstream.
-*/
-inline const TUint8* TBitOutput::Ptr() const
-	{return iPtr;}
-/** Get the number of bits that are buffered
-
-	This reports the number of bits that have not yet been written into the
-	output buffer. It will always lie in the range 0..7. Use PadL() to
-	pad the data out to the next byte and write it to the buffer.
-*/
-inline TInt TBitOutput::BufferedBits() const
-	{return iBits+8;}
-
-
-/** Bit input stream.
-	Good for reading bit streams for packed, compressed or huffman data algorithms.
-	@since 8.0
-	@library euser.lib
-*/
-class TBitInput
-	{
-public:
-	TBitInput();
-	TBitInput(const TUint8* aPtr, TInt aLength, TInt aOffset=0);
-	void Set(const TUint8* aPtr, TInt aLength, TInt aOffset=0);
- 	inline virtual ~TBitInput() { } 
-	TUint ReadL();
-	TUint ReadL(TInt aSize);
-	TUint HuffmanL(const TUint32* aTree);
-private:
-	virtual void UnderflowL();
-private:
-	TInt iCount;
-	TUint iBits;
-	TInt iRemain;
-	const TUint32* iPtr;
-	};
-
-/** Huffman code toolkit.
-
-	This class builds a huffman encoding from a frequency table and builds
-	a decoding tree from a code-lengths table
-
-	The encoding generated is based on the rule that given two symbols s1 and s2, with 
-	code length l1 and l2, and huffman codes h1 and h2:
-
-		if l1<l2 then h1<h2 when compared lexicographically
-		if l1==l2 and s1<s2 then h1<h2 ditto
-
-	This allows the encoding to be stored compactly as a table of code lengths
-
-	@since 8.0
-	@library euser.lib
-*/
-class Huffman
-	{
-public:
-	enum {KMaxCodeLength=27};
-	enum {KMetaCodes=KMaxCodeLength+1};
-	enum {KMaxCodes=0x8000};
-public:
-	static void HuffmanL(const TUint32 aFrequency[],TInt aNumCodes,TUint32 aHuffman[]);
-	static void Encoding(const TUint32 aHuffman[],TInt aNumCodes,TUint32 aEncodeTable[]);
-	static void Decoding(const TUint32 aHuffman[],TInt aNumCodes,TUint32 aDecodeTree[],TInt aSymbolBase=0);
-	static TBool IsValid(const TUint32 aHuffman[],TInt aNumCodes);
-//
-	static void ExternalizeL(TBitOutput& aOutput,const TUint32 aHuffman[],TInt aNumCodes);
-	static void InternalizeL(TBitInput& aInput,TUint32 aHuffman[],TInt aNumCodes);
-	};
-
-#endif
-