CEZDecompressor Class Reference

class CEZDecompressor : public CEZZStream

The CEZDecompressor class provides in-memory de-compression functions, including integrity checks of the compressed data. This version of the library supports only one compression / de-compression method (deflation / inflation). De-compression can be done in a single step (using DecompressL() ) if the buffers are large enough (for example if an input file is mmap'ed), or can be done by repeated calls of the InflateL() function. The source data is de-compressed to the target buffer (both source and target contained within the buffer manager argument).

Note: In this version of the library a windowBits value of 8 is unsupported due to a problem with the window size being set to 256 bytes. Although a value of 8 will be accepted by the CEZCompressor constructors, as it is being changed internally by Zlib from 8 to 9, it will not be possible to use the same value for decompression. This is because the Zlib functions called by the CEZDecompressor constructors do not make the same change internally and as a result a KEZlibErrData is returned when calling InflateL() . It is therefore advised that for this version of the library windowBits of 9 is used in place of 8.

Inherits from

Public Member Functions
~CEZDecompressor ()
IMPORT_C void DecompressL ( TDes8 &, const TDesC8 &)
IMPORT_C TBool InflateL ()
IMPORT_C CEZDecompressor * NewL ( MEZBufferManager &, TInt )
IMPORT_C CEZDecompressor * NewL ( MEZBufferManager &, const TDesC8 &, TInt )
IMPORT_C CEZDecompressor * NewLC ( MEZBufferManager &, TInt )
IMPORT_C CEZDecompressor * NewLC ( MEZBufferManager &, const TDesC8 &, TInt )
IMPORT_C void ResetL ( MEZBufferManager &)
Private Member Functions
CEZDecompressor ( MEZBufferManager *)
CEZDecompressor ( MEZBufferManager *, const TUint8 *, TInt )
void ConstructL ( TInt )
void SetDictionaryL ()
Inherited Functions
CBase::CBase()
CBase::Delete(CBase *)
CBase::Extension_(TUint,TAny *&,TAny *)
CBase::operator new(TUint)
CBase::operator new(TUint,TAny *)
CBase::operator new(TUint,TLeave)
CBase::operator new(TUint,TLeave,TUint)
CBase::operator new(TUint,TUint)
CBase::~CBase()
CEZZStream::Adler32()const
CEZZStream::AvailIn()const
CEZZStream::AvailOut()const
CEZZStream::CEZZStream()
CEZZStream::OutputDescriptor()const
CEZZStream::Progress(TInt)const
CEZZStream::SetInput(const TDesC8 &)
CEZZStream::SetOutput(TDes8 &)
CEZZStream::TotalIn()const
CEZZStream::TotalOut()const
Public Member Enumerations
enum anonymous { EInflateInitlialiserError  = EUnexpected + 1, EInflateVersionError , EInflateTerminated , EInflateDictionaryError }
enum anonymous { EMaxWBits  = MAX_WBITS }
Private Member Enumerations
enum TInflationState { ENoFlush , EFinalize , ETerminated }
Inherited Enumerations
CEZZStream:@26
Private Attributes
MEZBufferManager * iBufferInit
const TUint8 * iDictionary
TInt iDictionaryLength
TInflationState iInflationState
Inherited Attributes
CEZZStream::iOutputBufferLength
CEZZStream::iOutputPointer
CEZZStream::iStream

Constructor & Destructor Documentation

CEZDecompressor(MEZBufferManager *)

CEZDecompressor ( MEZBufferManager * aInit ) [private]

Parameters

MEZBufferManager * aInit

CEZDecompressor(MEZBufferManager *, const TUint8 *, TInt)

CEZDecompressor ( MEZBufferManager * aInit,
const TUint8 * aDictionary,
TInt aLength
) [private]

Parameters

MEZBufferManager * aInit
const TUint8 * aDictionary
TInt aLength

~CEZDecompressor()

~CEZDecompressor ( )

Member Functions Documentation

ConstructL(TInt)

void ConstructL ( TInt aWindowBits ) [private]

Parameters

TInt aWindowBits

DecompressL(TDes8 &, const TDesC8 &)

IMPORT_C void DecompressL ( TDes8 & aDestination,
const TDesC8 & aSource
) [static]

De-compresses the data in the given buffer

leave
KEZLibErrBuf There is a problem with the buffer
leave
KEZLIbErrData There is a problem with the data
leave
... Any of the system wide error codes

Parameters

TDes8 & aDestination the target buffer for the de-compressed data
const TDesC8 & aSource the buffer containing the compressed data

InflateL()

IMPORT_C TBool InflateL ( )

De-compress the data to the buffer in stages, return value indicates if the de-compression has finalised or if further calls are necessary

leave
KEZlibErrStream There is a problem with the stream
leave
KEZlibErrBuf There is a problem with the buffer
leave
KEZlibErrData There is a problem with the data
leave
KEZlibErrUnexpected Unexpected programming error
leave
... Any of the System wide error codes

NewL(MEZBufferManager &, TInt)

IMPORT_C CEZDecompressor * NewL ( MEZBufferManager & aInit,
TInt aWindowBits = EMaxWBits
) [static]

Creates a new CEZDecompressor object

Parameters

MEZBufferManager & aInit buffer manager to handle both input and output buffers
TInt aWindowBits = EMaxWBits the base two logarithm of the window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. Larger values of this parameter result in better compression at the expense of memory usage.

NewL(MEZBufferManager &, const TDesC8 &, TInt)

IMPORT_C CEZDecompressor * NewL ( MEZBufferManager & aInit,
const TDesC8 & aDictionary,
TInt aWindowBits = EMaxWBits
) [static]

Overload of CEZDecompressor constructor takes aDictionary argument

Parameters

MEZBufferManager & aInit buffer manager to handle both input and output buffers
const TDesC8 & aDictionary used to initialize the de-compression dictionary from the given byte sequence. The compressor and decompressor must use exactly the same dictionary.
TInt aWindowBits = EMaxWBits the base two logarithm of the window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. Larger values of this parameter result in better compression at the expense of memory usage.

NewLC(MEZBufferManager &, TInt)

IMPORT_C CEZDecompressor * NewLC ( MEZBufferManager & aInit,
TInt aWindowBits = EMaxWBits
) [static]

Creates a new CEZDecompressor object and leaves it on the CleanupStack

Parameters

MEZBufferManager & aInit buffer manager to handle both input and output buffers
TInt aWindowBits = EMaxWBits the base two logarithm of the window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. Larger values of this parameter result in better compression at the expense of memory usage.

NewLC(MEZBufferManager &, const TDesC8 &, TInt)

IMPORT_C CEZDecompressor * NewLC ( MEZBufferManager & aInit,
const TDesC8 & aDictionary,
TInt aWindowBits = EMaxWBits
) [static]

Overload of CEZDecompressor constructor takes aDictionary argument

Parameters

MEZBufferManager & aInit buffer manager to handle both input and output buffers
const TDesC8 & aDictionary used to initialize the de-compression dictionary from the given byte sequence. The compressor and decompressor must use exactly the same dictionary.
TInt aWindowBits = EMaxWBits the base two logarithm of the window size (the size of the history buffer). It should be in the range 8..15 for this version of the library. Larger values of this parameter result in better compression at the expense of memory usage.

ResetL(MEZBufferManager &)

IMPORT_C void ResetL ( MEZBufferManager & aInit )

Resets the current de-compression operation, with the new buffer manager

leave
KEZlibErrStream There is a problem with the stream
leave
... Any of the System wide error codes

Parameters

MEZBufferManager & aInit new buffer manager to handle the new input and output buffers

SetDictionaryL()

void SetDictionaryL ( ) [private]

Member Enumerations Documentation

Enum anonymous

Decompression panic values

Enumerators

EInflateInitlialiserError = EUnexpected + 1
EInflateVersionError
EInflateTerminated
EInflateDictionaryError

Enum anonymous

Window Bits - the base two logarithm of the window size (the size of the history buffer)

Enumerators

EMaxWBits = MAX_WBITS

Enum TInflationState

Enumerators

ENoFlush
EFinalize
ETerminated

Member Data Documentation

MEZBufferManager * iBufferInit

MEZBufferManager * iBufferInit [private]

const TUint8 * iDictionary

const TUint8 * iDictionary [private]

TInt iDictionaryLength

TInt iDictionaryLength [private]

TInflationState iInflationState

TInflationState iInflationState [private]