From: Christian P. <cp...@us...> - 2005-01-06 16:41:47
|
Update of /cvsroot/pclasses/pclasses2/include/pclasses/IO In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11357/include/pclasses/IO Modified Files: ZLib.h Log Message: Rework of ZLibStream and ZLibOutputStream. Added ZLibInputStream. Index: ZLib.h =================================================================== RCS file: /cvsroot/pclasses/pclasses2/include/pclasses/IO/ZLib.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- ZLib.h 3 Jan 2005 13:43:50 -0000 1.1 +++ ZLib.h 6 Jan 2005 16:41:38 -0000 1.2 @@ -49,56 +49,68 @@ //! ZLib stream base class ZLibStream { public: - ZLibStream(); + ZLibStream(size_t bufferSize); virtual ~ZLibStream(); //! Number of bytes available to consume size_t bytesAvail() const throw(); - //! Consume compressed data - size_t read(char* buffer, size_t count) throw(ZLibError); + //! Returns the Adler32 checksum of consumed data + UInt32 adler32() const throw(); - //! Returns the crc32 - UInt32 crc32() const throw(); + //! Returns a pointer to the produced data + const char* buffer() const throw(); - protected: + //! Dequeue produced data + size_t dequeue(size_t count) throw(ZLibError); + + //! Put data into producer buffer void put(const char* buffer, size_t count) throw(ZLibError); + protected: z_stream* _strm; char* _buffer; size_t _bufferSize; - UInt32 _crc32; }; //! ZLib output (deflate) stream class ZLibOutputStream: public ZLibStream { public: - ZLibOutputStream(int level = 6) throw(ZLibError); + ZLibOutputStream(int level = 6, size_t bufferSize = 1024) throw(ZLibError); ~ZLibOutputStream() throw(); //! Deflate (compress) buffer into output buffer + /*! + Returns the number of bytes actually deflated. + */ size_t deflate(const char* buffer, size_t count) throw(ZLibError); + void sync() throw(ZLibError); + //! Finish compression and reset state bool finish() throw(ZLibError); //! Reset stream void reset() throw(ZLibError); +}; - private: - void putHeader(); - void putFooter(); +//! ZLib input (inflate) stream +class ZLibInputStream: public ZLibStream { + public: + ZLibInputStream(size_t bufferSize = 1024) throw(ZLibError); + ~ZLibInputStream() throw(); - enum State { - Ready, - AboutToFinish, - Finished - }; + //! Inflate (decompress) buffer into output buffer + /*! + Returns the number of bytes actually inflated, which may be NULL + when <count> is NULL or the end of the stream has been reached. + */ + size_t inflate(const char* buffer, size_t count) throw(ZLibError); - State _state; + //! Reset stream + void reset() throw(ZLibError); }; - } // !namespace IO } // !namespace P |