CEZCompressor Class Reference

class CEZCompressor : public CEZZStream

The CEZCompressor class provides in-memory compression functions, including integrity checks of the uncompressed data. This version of the library supports only one compression method (deflation). Compression can be done in a single step (using CompressL() ) if the buffers are large enough (for example if an input file is mmap'ed), or can be done by repeated calls of the DeflateL() function. The source data is compressed to the target buffer (both source and target contained within the buffer manager argument), and various other arguments distinguish the different compression settings.

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
~CEZCompressor ()
IMPORT_C void CompressL ( TDes8 &, const TDesC8 &, TInt )
IMPORT_C TBool DeflateL ()
IMPORT_C CEZCompressor * NewL ( MEZBufferManager &, TInt , TInt , TInt , TStrategy )
IMPORT_C CEZCompressor * NewL ( MEZBufferManager &, const TDesC8 &, TInt , TInt , TInt , TStrategy )
IMPORT_C CEZCompressor * NewLC ( MEZBufferManager &, TInt , TInt , TInt , TStrategy )
IMPORT_C CEZCompressor * NewLC ( MEZBufferManager &, const TDesC8 &, TInt , TInt , TInt , TStrategy )
IMPORT_C void ResetL ( MEZBufferManager &)
Private Member Functions
CEZCompressor ( MEZBufferManager *)
void ConstructL ( TInt , const TUint8 *, TInt , TInt , TInt , TStrategy )
void ConstructL ( TInt , TInt , TInt , TStrategy )
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 { EDefaultCompression  = Z_DEFAULT_COMPRESSION, ENoCompression  = Z_NO_COMPRESSION, EBestSpeed  = Z_BEST_SPEED, EBestCompression  = Z_BEST_COMPRESSION }
enum anonymous { EMaxWBits  = MAX_WBITS }
enum anonymous { EDefMemLevel  = MAX_MEM_LEVEL }
enum anonymous { EDeflateInitlialiserError  = EUnexpected + 1, EDeflateTerminated }
enum TStrategy { EDefaultStrategy  = Z_DEFAULT_STRATEGY, EFiltered  = Z_FILTERED, EHuffmanOnly  = Z_HUFFMAN_ONLY }
Private Member Enumerations
enum TDeflationState { ENoFlush , EFinish , EFinalize , ETerminated }
Inherited Enumerations
CEZZStream:@26
Private Attributes
MEZBufferManager * iBufferInit
TDeflationState iDeflationState
Inherited Attributes
CEZZStream::iOutputBufferLength
CEZZStream::iOutputPointer
CEZZStream::iStream

Constructor & Destructor Documentation

CEZCompressor(MEZBufferManager *)

CEZCompressor ( MEZBufferManager * aInit ) [private]

Parameters

MEZBufferManager * aInit

~CEZCompressor()

~CEZCompressor ( )

Member Functions Documentation

CompressL(TDes8 &, const TDesC8 &, TInt)

IMPORT_C void CompressL ( TDes8 & aDestination,
const TDesC8 & aSource,
TInt aLevel = EDefaultCompression
) [static]

Compresses the data in the given buffer

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

Parameters

TDes8 & aDestination the target buffer for the compressed data
const TDesC8 & aSource the buffer containing the data to be compressed
TInt aLevel = EDefaultCompression the level of compression

ConstructL(TInt, const TUint8 *, TInt, TInt, TInt, TStrategy)

void ConstructL ( TInt aLevel,
const TUint8 * aDictionary,
TInt aLength,
TInt aWindowBits,
TInt aMemLevel,
TStrategy aStrategy
) [private]

Parameters

TInt aLevel
const TUint8 * aDictionary
TInt aLength
TInt aWindowBits
TInt aMemLevel
TStrategy aStrategy

ConstructL(TInt, TInt, TInt, TStrategy)

void ConstructL ( TInt aLevel,
TInt aWindowBits,
TInt aMemLevel,
TStrategy aStrategy
) [private]

Parameters

TInt aLevel
TInt aWindowBits
TInt aMemLevel
TStrategy aStrategy

DeflateL()

IMPORT_C TBool DeflateL ( )

Compress the data to the buffer in stages, return value indicates if the 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
KEZlibErrUnexpected Unexpected programming error
leave
... Any of the System wide error codes

NewL(MEZBufferManager &, TInt, TInt, TInt, TStrategy)

IMPORT_C CEZCompressor * NewL ( MEZBufferManager & aInit,
TInt aLevel = EDefaultCompression,
TInt aWindowBits = EMaxWBits,
TInt aMemLevel = EDefMemLevel,
TStrategy aStrategy = EDefaultStrategy
) [static]

Creates a new CEZCompressor object

TStrategy

Parameters

MEZBufferManager & aInit buffer manager to handle both input and output buffers
TInt aLevel = EDefaultCompression compression levels
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.
TInt aMemLevel = EDefMemLevel specifies how much memory should be allocated for the internal compression state. memLevel=1 uses minimum memory but is slow and reduces compression ratio; memLevel=9 uses maximum memory for optimal speed.
TStrategy aStrategy = EDefaultStrategy compression strategy - used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately

NewL(MEZBufferManager &, const TDesC8 &, TInt, TInt, TInt, TStrategy)

IMPORT_C CEZCompressor * NewL ( MEZBufferManager & aInit,
const TDesC8 & aDictionary,
TInt aLevel = EDefaultCompression,
TInt aWindowBits = EMaxWBits,
TInt aMemLevel = EDefMemLevel,
TStrategy aStrategy = EDefaultStrategy
) [static]

Overload of CEZCompressor constructor takes aDictionary argument

TStrategy

Parameters

MEZBufferManager & aInit buffer manager to handle both input and output buffers
const TDesC8 & aDictionary used to initialize the compression dictionary from the given byte sequence without producing any compressed output. The compressor and decompressor must use exactly the same dictionary. The dictionary should consist of strings (byte sequences) that are likely to be encountered later in the data to be compressed, with the most commonly used strings preferably put towards the end of the dictionary. Using a dictionary is most useful when the data to be compressed is short and can be predicted with good accuracy; the data can then be compressed better than with the default empty dictionary.
TInt aLevel = EDefaultCompression compression level
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.
TInt aMemLevel = EDefMemLevel specifies how much memory should be allocated for the internal compression state. memLevel=1 uses minimum memory but is slow and reduces compression ratio; memLevel=9 uses maximum memory for optimal speed.
TStrategy aStrategy = EDefaultStrategy compression strategy - used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately

NewLC(MEZBufferManager &, TInt, TInt, TInt, TStrategy)

IMPORT_C CEZCompressor * NewLC ( MEZBufferManager & aInit,
TInt aLevel = EDefaultCompression,
TInt aWindowBits = EMaxWBits,
TInt aMemLevel = EDefMemLevel,
TStrategy aStrategy = EDefaultStrategy
) [static]

Creates a new CEZCompressor object and leaves it on the CleanupStack

TStrategy

Parameters

MEZBufferManager & aInit buffer manager to handle both input and output buffers
TInt aLevel = EDefaultCompression compression levels
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.
TInt aMemLevel = EDefMemLevel specifies how much memory should be allocated for the internal compression state. memLevel=1 uses minimum memory but is slow and reduces compression ratio; memLevel=9 uses maximum memory for optimal speed.
TStrategy aStrategy = EDefaultStrategy compression strategy - used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately

NewLC(MEZBufferManager &, const TDesC8 &, TInt, TInt, TInt, TStrategy)

IMPORT_C CEZCompressor * NewLC ( MEZBufferManager & aInit,
const TDesC8 & aDictionary,
TInt aLevel = EDefaultCompression,
TInt aWindowBits = EMaxWBits,
TInt aMemLevel = EDefMemLevel,
TStrategy aStrategy = EDefaultStrategy
) [static]

Overload of CEZCompressor constructor takes aDictionary argument

TStrategy

Parameters

MEZBufferManager & aInit buffer manager to handle both input and output buffers
const TDesC8 & aDictionary used to initialize the compression dictionary from the given byte sequence without producing any compressed output. The compressor and decompressor must use exactly the same dictionary. The dictionary should consist of strings (byte sequences) that are likely to be encountered later in the data to be compressed, with the most commonly used strings preferably put towards the end of the dictionary. Using a dictionary is most useful when the data to be compressed is short and can be predicted with good accuracy; the data can then be compressed better than with the default empty dictionary.
TInt aLevel = EDefaultCompression compression level
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.
TInt aMemLevel = EDefMemLevel specifies how much memory should be allocated for the internal compression state. memLevel=1 uses minimum memory but is slow and reduces compression ratio; memLevel=9 uses maximum memory for optimal speed.
TStrategy aStrategy = EDefaultStrategy compression strategy - used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately

ResetL(MEZBufferManager &)

IMPORT_C void ResetL ( MEZBufferManager & aInit )

Resets the current compression operation, with the new buffer manager

leave
... Any of the system wide error codes

Parameters

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

Member Enumerations Documentation

Enum anonymous

Compression levels

Enumerators

EDefaultCompression = Z_DEFAULT_COMPRESSION
ENoCompression = Z_NO_COMPRESSION
EBestSpeed = Z_BEST_SPEED
EBestCompression = Z_BEST_COMPRESSION

Enum anonymous

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

Enumerators

EMaxWBits = MAX_WBITS

Enum anonymous

Memory level - specifies how much memory should be allocated for the internal compression state

Enumerators

EDefMemLevel = MAX_MEM_LEVEL

Enum anonymous

Compression panic values

Enumerators

EDeflateInitlialiserError = EUnexpected + 1
EDeflateTerminated

Enum TDeflationState

Enumerators

ENoFlush
EFinish
EFinalize
ETerminated

Enum TStrategy

Compression strategy - used to tune the compression algorithm

Enumerators

EDefaultStrategy = Z_DEFAULT_STRATEGY

Use for normal data

EFiltered = Z_FILTERED

Use for data produced by a filter (or predictor)

EHuffmanOnly = Z_HUFFMAN_ONLY

Force Huffman encoding only (no string match)

Member Data Documentation

MEZBufferManager * iBufferInit

MEZBufferManager * iBufferInit [private]

TDeflationState iDeflationState

TDeflationState iDeflationState [private]