diff -r 000000000000 -r e4d67989cc36 compressionlibs/ziplib/test/oldezlib/inc/OldEZGzip.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compressionlibs/ziplib/test/oldezlib/inc/OldEZGzip.h Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,257 @@ +// Copyright (c) 2003-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: +// + +#ifndef __EZLIB_GZIP_H__ +#define __EZLIB_GZIP_H__ + +#include "OldEZDecompressor.h" +#include "OldEZCompressor.h" +#include "OldEZFilebuffer.h" + + +namespace TOLDEZLIB +{ + +/** +The TEZGZipHeader class encapsulates a zip file header, which is written to the start of the zip +file to store various settings of the archive + +@publishedAll +@released +*/ +class TEZGZipHeader + { + +public: + IMPORT_C TEZGZipHeader(); + IMPORT_C ~TEZGZipHeader(); + +public: + TUint8 iId1; + TUint8 iId2; + TUint8 iCompressionMethod; + TUint8 iFlags; + TInt32 iTime; + TUint8 iExtraFlags; + TUint8 iOs; + TInt16 iXlen; + HBufC8* iExtra; + HBufC8* iFname; + HBufC8* iComment; + TInt16 iCrc; + }; + +/** +The TEZGZipTrailer class encapsulates a zip file trailer, which uses a CRC (cyclic redundancy check) to +confirm the validity of the unpacked archive + +@publishedAll +@released +*/ +class TEZGZipTrailer + { +public: + IMPORT_C TEZGZipTrailer(); + IMPORT_C TEZGZipTrailer(TInt32 aCrc, TInt32 aSize); +public: + TInt32 iCrc32; + TInt32 iSize; + }; + +/** +The EZGZipFile class handles writing / reading of headers and trailers to / from zip files + +@publishedAll +@released +*/ +class EZGZipFile + { +public: + + /** Zip file error codes */ + enum { ENotGZipFile = KEZlibErrNotGZipFile, + EInvalidCompressionMethod = KEZlibErrInvalidCompression, + EBadGZipHeader= KEZlibErrBadGZipHeader, + EBadGZipTrailer = KEZlibErrBadGZipTrailer, + EBadGZipCrc = KEZlibErrBadGZipCrc }; + /** Flags to determine which part of the header / trailer is being written */ + enum { EFText = 0, EFHcrc = 1, EFExtra = 2, EFName = 3, EFComment = 4}; + +public: + IMPORT_C static void ReadHeaderL(RFile &aFile, TEZGZipHeader &aHeader); + IMPORT_C static void WriteHeaderL(RFile &aFile, TEZGZipHeader &aHeader); + IMPORT_C static void ReadTrailerL(RFile &aFile, TEZGZipTrailer &aTrailer); + IMPORT_C static void WriteTrailerL(RFile &aFile, TEZGZipTrailer &aTrailer); + IMPORT_C static void LocateAndReadTrailerL(RFs &aRfs, const TDesC &aFname, TEZGZipTrailer &aTrailer); + IMPORT_C static TBool IsGzipFile(RFs &aRfs, const TDesC &aFname); + IMPORT_C static TBool IsGzipFileL(RFs &aRfs, const TDesC &aFname); + +private: + static void ReadStringIntoDescriptorL(RFile &aFile, HBufC8 **aDes); + +public: + /** First of the header ID pair */ + static const TUint8 ID1; + /** Second of the header ID pair */ + static const TUint8 ID2; + }; + +/** +The CEZFileToGzipBM manages the input and output buffers for compression + +@publishedAll +@released +*/ +NONSHARABLE_CLASS(CEZFileToGzipBM) : public CEZFileBufferManager + { +public: + + static CEZFileToGzipBM* NewLC(RFile &aInput, RFile &aOutput, TInt aBufferSize); + static CEZFileToGzipBM* NewL(RFile &aInput, RFile &aOutput, TInt aBufferSize); + + /** + Initialise the stream with input and output buffers and starts reading + + @param aZStream the stream to initialise + */ + virtual void InitializeL(CEZZStream &aZStream); + + /** + Set the stream's input buffer and starts reading + + @param aZStream the steam whose input buffer to set + */ + virtual void NeedInputL(CEZZStream &aZStream); + + /** + Return the CRC - used for checking validity of the archive + + @return the CRC value + */ + TInt32 Crc() const { return iCrc; } ; + +private: + CEZFileToGzipBM(RFile &aInput, RFile &aOutput); +private: + TInt32 iCrc; + }; + +/** +The CEZGzipToFileBM class manages the input and output buffers for de-compression + +@publishedAll +@released +*/ +NONSHARABLE_CLASS(CEZGzipToFileBM) : public CEZFileBufferManager + { +public: + + static CEZGzipToFileBM* NewLC(RFile &aInput, RFile &aOutput, TInt aBufferSize); + static CEZGzipToFileBM* NewL(RFile &aInput, RFile &aOutput, TInt aBufferSize); + + /** + Finish writing to the stream + + @param aZStream the stream to complete writing to + */ + virtual void FinalizeL(CEZZStream &aZStream); + + /** + Set the stream's output buffer and start writing + + @param aZStream the steam whose output buffer to set + */ + virtual void NeedOutputL(CEZZStream &aZStream); + + /** + Return the CRC - used for checking validity of the archive + + @return the CRC value + */ + TInt32 Crc() const { return iCrc; } ; + +private: + CEZGzipToFileBM(RFile &aInput, RFile &aOutput); +private: + TInt32 iCrc; + }; + + +/** +A CEZGZipToFile object allows de-compression of a compressed file. +The name of the compressed file is passed into the constructor along with a target file +to contain the uncompressed data. The file is uncompressed by calling the InflateL() function. + +@publishedAll +@released +*/ +class CEZGZipToFile : public CBase + { +public: + ~CEZGZipToFile(); + + IMPORT_C static CEZGZipToFile* NewLC(RFs &aRfs, const TDesC &aGzFileName, RFile &aOutput, TInt aBufferSize = 0x8000); + IMPORT_C static CEZGZipToFile* NewL(RFs &aRfs, const TDesC &aGzFileName, RFile &aOutput, TInt aBufferSize = 0x8000); + + IMPORT_C void ResetL(RFs &aRfs, const TDesC &aGzFileName, RFile &aOutput, TInt aBufferSize = 0x8000); + + IMPORT_C TBool InflateL(); + +private: + CEZGZipToFile(); + void ConstructL(RFs &aRfs, const TDesC &aGzFileName, RFile &aOutput, TInt aBufferSize); + void InitialiseBufManL(RFs &aRfs, const TDesC &aGzFileName, RFile &aOutput, TInt aBufferSize); +private: + CEZDecompressor *iDecompressor; + CEZGzipToFileBM *iBufferManager; + TEZGZipTrailer iTrailer; + RFile iGZipFile; + TEZGZipHeader iHeader; + }; + +/** +A CEZFileToGZip object allows compression of an uncompressed file to a zip file. +The uncompressed source file is passed into the constructor along with the name of the target +zip file. The file is compressed by calling the DeflateL() function. + +@publishedAll +@released +*/ +class CEZFileToGZip : public CBase + { +public: + ~CEZFileToGZip(); + + IMPORT_C static CEZFileToGZip* NewLC(RFs &aRfs, const TDesC &aGzFileName, RFile &aInput, TInt aBufferSize = 0x8000); + IMPORT_C static CEZFileToGZip* NewL(RFs &aRfs, const TDesC &aGzFileName, RFile &aInput, TInt aBufferSize = 0x8000); + + IMPORT_C void ResetL(RFs &aRfs, const TDesC &aGzFileName, RFile &aInput, TInt aBufferSize = 0x8000); + + IMPORT_C TBool DeflateL(); + +private: + CEZFileToGZip(); + void ConstructL(RFs &aRfs, const TDesC &aGzFileName, RFile &aInput, TInt aBufferSize); + void InitialiseBufManL(RFs &aRfs, const TDesC &aGzFileName, RFile &aInput, TInt aBufferSize); +private: + CEZCompressor *iCompressor; + CEZFileToGzipBM *iBufferManager; + TInt iUncompressedDataSize; + RFile iGZipFile; + TEZGZipHeader iHeader; + }; + +}// namespace TOLDEZLIB +#endif