The Zlib Compression Library

By Mark R. Nelson

Dr. Dobb's Journal January 1997

class ZlibEngine : public z_stream {
    public :            ZlibEngine();
        int compress( const char *input,
                      const char *output,
                      int level = 6 );
        int decompress( const char *input,
                        const char *output );
        void set_abort_flag( int i ){ m_AbortFlag = i; }
    protected :
        int percent();
        int load_input();
        int flush_output();
    protected :
        virtual void progress( int percent ){};
        virtual void status( char *message ){};
    protected :
        int m_AbortFlag;
        FILE *fin;
        FILE *fout;
        long length;
        int err;
        enum { input_length = 4096 };
        unsigned char input_buffer[ input_length ];
        enum { output_length = 4096 };
        unsigned char output_buffer[ output_length ];
};

Figure 4: The ZlibEngine wrapper class.

Back to Article


Copyright © 1997, Dr. Dobb's Journal