00001 #ifndef _WINC_BZLIB
00002 #define _WINC_BZLIB
00003
00004 #include <bzlib.h>
00005
00006 #include <WXP/Buffer.h>
00007
00008 namespace WXP {
00009 class BZlib {
00010 int type;
00011 bz_stream bz;
00012 int stat;
00013
00014 public:
00015 BZlib();
00016 BZlib( int rtype );
00017 int init();
00018 int setIn( unsigned char *next_in, int avail_in );
00019 int setOut( unsigned char *next_out, int avail_out );
00020 int decomp();
00021 int decomp( Buffer &in, Buffer &out );
00022 int comp( int flag );
00023 int finish();
00024 int print();
00025
00026 inline int getStatus(){ return stat; };
00027 inline int getAvailIn(){ return bz.avail_in; };
00028 inline int getAvailOut(){ return bz.avail_out; };
00029 inline int getTotalOut(){ return bz.total_out_lo32; };
00030 inline bool isError(){ return stat < 0 ? true : false; };
00031
00032 static int const STREAM_END = BZ_STREAM_END;
00033 static int const OK = BZ_OK;
00034
00035 enum { COMP, DECOMP };
00036 };
00037 }
00038 #endif