williamr@2: // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // Declaration for CEZStream class. williamr@2: // williamr@2: // williamr@2: williamr@2: #ifndef __EZZSTREAM_H__ williamr@2: #define __EZZSTREAM_H__ williamr@2: williamr@2: #include williamr@4: #include williamr@2: #include williamr@2: williamr@2: /** williamr@2: Represents a zip stream williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CEZZStream : public CBase williamr@2: { williamr@2: public: williamr@2: /** stream panic values */ williamr@2: enum williamr@2: { williamr@2: EStreamError = -Z_STREAM_ERROR, williamr@2: EDataError = -Z_DATA_ERROR, williamr@2: EBufError = -Z_BUF_ERROR, williamr@2: EVersionError = -Z_VERSION_ERROR, williamr@2: EUnexpected williamr@2: }; williamr@2: public: williamr@2: IMPORT_C void SetInput(const TDesC8& aInputData); williamr@2: IMPORT_C void SetOutput(TDes8& aOutputData); williamr@2: williamr@2: IMPORT_C TPtrC8 OutputDescriptor() const; williamr@2: IMPORT_C TInt TotalOut() const; williamr@2: IMPORT_C TInt TotalIn() const; williamr@2: IMPORT_C TInt32 Adler32() const; williamr@2: IMPORT_C TInt AvailIn() const; williamr@2: IMPORT_C TInt AvailOut() const; williamr@2: williamr@2: IMPORT_C TInt Progress(TInt aTotalLength) const; williamr@2: williamr@2: protected: williamr@2: CEZZStream(); williamr@2: williamr@2: williamr@2: protected: williamr@2: z_stream iStream; williamr@2: williamr@2: // This pointer is reset every time SetOutput is called. It maintains a pointer to the williamr@2: // start of the output buffer which is being written to. We cannot use iStream.next_out, williamr@2: // because zlib will modifify this during its deflate and inflate. williamr@2: williamr@2: TUint8* iOutputPointer; williamr@2: TInt iOutputBufferLength; williamr@2: }; williamr@2: williamr@2: #endif