#include <ZipCompressor.h>
Classes | |
struct | COptions |
class | COptionsMap |
Public Types | |
enum | CompressionLevel { levelDefault = -1, levelStore = 0, levelFastest = 1, levelBest = 9 } |
enum | CompressionMethod { methodStore = 0, methodDeflate = 8, methodBzip2 = 12, methodWinZipAes = 99 } |
enum | CompressorType { typeDeflate = 1, typeBzip2, typePPMd } |
Public Member Functions | |
virtual bool | CanProcess (WORD uMethod)=0 |
virtual void | Compress (const void *pBuffer, DWORD uSize)=0 |
virtual DWORD | Decompress (void *pBuffer, DWORD uSize)=0 |
virtual void | FinishCompression (bool bAfterException) |
virtual void | FinishDecompression (bool bAfterException) |
virtual const COptions * | GetOptions () const |
virtual void | InitCompression (int iLevel, CZipFileHeader *pFile, CZipCryptograph *pCryptograph) |
virtual void | InitDecompression (CZipFileHeader *pFile, CZipCryptograph *pCryptograph) |
void | UpdateOptions (const COptionsMap &optionsMap) |
Static Public Member Functions | |
static CZipCompressor * | CreateCompressor (WORD uMethod, CZipStorage *pStorage) |
static bool | IsCompressionSupported (WORD uCompressionMethod) |
Public Attributes | |
ZIP_SIZE_TYPE | m_uComprLeft |
The number of bytes left to compress. | |
DWORD | m_uCrc32 |
The CRC32 file checksum. | |
ZIP_SIZE_TYPE | m_uUncomprLeft |
The number of bytes left to decompress. | |
Protected Member Functions | |
virtual int | ConvertInternalError (int iErr) const |
CZipCompressor (CZipStorage *pStorage) | |
DWORD | FillBuffer () |
void | FlushWriteBuffer () |
void | InitBuffer () |
void | ReleaseBuffer () |
void | ThrowError (int iErr, bool bInternal=false) |
void | UpdateCrc (const void *pBuffer, DWORD uSize) |
void | UpdateFileCrc (const void *pBuffer, DWORD uSize) |
virtual void | UpdateOptions (const COptions *pOptions) |
void | WriteBuffer (char *pBuffer, DWORD uSize) |
Protected Attributes | |
CZipAutoBuffer | m_pBuffer |
A buffer that receives compressed data or provides data for decompression. | |
CZipCryptograph * | m_pCryptograph |
The current cryptograph. | |
CZipFileHeader * | m_pFile |
The file header being compressed or decompressed. | |
CZipStorage * | m_pStorage |
The current storage object. | |
A base class for compressors used in compression and decompression of data.
Definition at line 41 of file ZipCompressor.h.
The compression level.
levelDefault |
The default compression level (equals |
levelStore |
No compression used. Data is stored. |
levelFastest |
The fastest compression. The compression ratio is the lowest (apart from levelStore). |
levelBest |
The highest compression ratio. It's usually the slowest one. |
Definition at line 80 of file ZipCompressor.h.
The compression method.
methodStore |
A file is stored, not compressed. |
methodDeflate |
The deflate compression method. |
methodBzip2 |
The bzip2 compression method.
|
methodWinZipAes |
This value means that WinZip AES encryption is used. The original compression method is stored in a WinZip extra field. It is only an informational value - you cannot set it as a compression method. The ZipArchive Library handles this value internally. |
Definition at line 91 of file ZipCompressor.h.
The type of a compressor.
typeDeflate |
Deflate compression (default in zip archives). |
typeBzip2 |
Bzip2 compression. |
typePPMd |
PPMd compression. |
Definition at line 70 of file ZipCompressor.h.
|
inlineprotected |
Initializes a new instance of the CZipCompressor class.
pStorage | The current storage object. |
Definition at line 56 of file ZipCompressor.h.
|
pure virtual |
Returns the value indicating whether the current CZipCompressor object supports the given compression method.
uMethod | The compression method. It can be one of the CompressionMethod values. |
true
, if the compression method is supported; false
otherwise. Implemented in ZipArchiveLib::CDeflateCompressor.
|
pure virtual |
Compresses the given data.
pBuffer | The buffer that holds the data to compress. |
uSize | The size of pBuffer. |
Implemented in ZipArchiveLib::CDeflateCompressor.
|
inlineprotectedvirtual |
Converts an internal error code of the compressor to the ZipArchive Library error code.
iErr | An internal error code. |
Reimplemented in ZipArchiveLib::CDeflateCompressor.
Definition at line 493 of file ZipCompressor.h.
|
static |
A factory method that creates an appropriate compressor for the given compression method.
uMethod | The compression method to create a compressor for. It can be one of the CompressionMethod values. |
pStorage | The current storage object. |
|
pure virtual |
Decompresses the given data.
pBuffer | The buffer that receives the decompressed data. |
uSize | The size of pBuffer. |
0
.Implemented in ZipArchiveLib::CDeflateCompressor.
|
inlineprotected |
Fills the read buffer.
Definition at line 449 of file ZipCompressor.h.
|
inlinevirtual |
The method called at the end of the compression process.
bAfterException | Set to true , if an exception occurred before or to false otherwise. |
Reimplemented in ZipArchiveLib::CDeflateCompressor.
Definition at line 319 of file ZipCompressor.h.
|
inlinevirtual |
The method called at the end of the decompression process.
bAfterException | Set to true , if an exception occurred before or to false otherwise. |
Reimplemented in ZipArchiveLib::CDeflateCompressor.
Definition at line 332 of file ZipCompressor.h.
|
inlineprotected |
Flushes data in the buffer into the storage, encrypting the data if needed.
Definition at line 419 of file ZipCompressor.h.
|
inlinevirtual |
Returns the current options of the compressor.
Reimplemented in ZipArchiveLib::CDeflateCompressor.
Definition at line 347 of file ZipCompressor.h.
|
protected |
Initializes the internal buffer.
|
inlinevirtual |
The method called when a new file is opened for compression.
iLevel | The compression level. |
pFile | The file being compressed. |
pCryptograph | The current CZipCryptograph. It can be NULL , if no encryption is used. |
Reimplemented in ZipArchiveLib::CDeflateCompressor.
Definition at line 237 of file ZipCompressor.h.
|
inlinevirtual |
The method called when a new file is opened for extraction.
pFile | The file being extracted. |
pCryptograph | The current CZipCryptograph. It can be NULL , if no decryption is used. |
Reimplemented in ZipArchiveLib::CDeflateCompressor, and ZipArchiveLib::CBaseLibCompressor.
Definition at line 259 of file ZipCompressor.h.
|
inlinestatic |
Returns the value indicating whether the given compression method is supported by the ZipArchive Library.
uCompressionMethod | The compression method. It can be one of the CompressionMethod values. |
true
, if the compression method is supported, false
otherwise. Definition at line 197 of file ZipCompressor.h.
|
inlineprotected |
|
inlineprotected |
Throws an exception with a given error code.
iErr | An error code. |
bInternal | true , if iErr is an internal error code and needs a conversion to the ZipArchive Library error code; false otherwise. |
Definition at line 511 of file ZipCompressor.h.
|
protected |
Updates CRC value while decompression.
pBuffer | A buffer with data for which the CRC value should be updated. |
uSize | The size of the buffer. |
|
protected |
Updates CRC value while compression.
pBuffer | A buffer with data for which the CRC value should be updated. |
uSize | The size of the buffer. |
void CZipCompressor::UpdateOptions | ( | const COptionsMap & | optionsMap | ) |
Updates the current options with the options stored in optionsMap, if the appropriate options are present in the map.
optionsMap | The map to get the new options from. |
|
inlineprotectedvirtual |
Updates the current options with the new options.
pOptions | The new options to apply. |
Reimplemented in ZipArchiveLib::CDeflateCompressor.
Definition at line 390 of file ZipCompressor.h.
|
inlineprotected |
Writes the buffer into the storage, encrypting the data if needed.
pBuffer | The buffer with data to write. |
uSize | The size of the buffer. |
Definition at line 434 of file ZipCompressor.h.
|
protected |
A buffer that receives compressed data or provides data for decompression.
Definition at line 45 of file ZipCompressor.h.
|
protected |
The current cryptograph.
Definition at line 46 of file ZipCompressor.h.
|
protected |
The file header being compressed or decompressed.
Definition at line 47 of file ZipCompressor.h.
|
protected |
The current storage object.
Definition at line 44 of file ZipCompressor.h.
ZIP_SIZE_TYPE CZipCompressor::m_uComprLeft |
The number of bytes left to compress.
Definition at line 204 of file ZipCompressor.h.
DWORD CZipCompressor::m_uCrc32 |
The CRC32 file checksum.
Definition at line 205 of file ZipCompressor.h.
ZIP_SIZE_TYPE CZipCompressor::m_uUncomprLeft |
The number of bytes left to decompress.
Definition at line 203 of file ZipCompressor.h.