00001 #ifndef _WINC_ZLIB
00002 #define _WINC_ZLIB
00003
00004 #include <zlib.h>
00005
00006 #include <WXP/Buffer.h>
00007
00008 namespace WXP {
00009 class Zlib {
00010 int type;
00011 z_stream zs;
00012 int stat;
00013
00014 public:
00015 Zlib();
00016 Zlib( int rtype );
00017 int init();
00018 int set( unsigned char *next_in, int avail_in,
00019 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
00027 inline int getStatus(){ return stat; };
00029 inline int getAvailIn(){ return zs.avail_in; };
00031 inline int getAvailOut(){ return zs.avail_out; };
00033 inline int getTotalOut(){ return zs.total_out; };
00035 inline bool isError(){ return stat < 0 ? true : false; };
00036
00037 static int const STREAM_END = Z_STREAM_END;
00038 static int const NEED_DICT = Z_NEED_DICT;
00039 static int const OK = Z_OK;
00040 static int const FINISH = Z_FINISH;
00042 enum {
00043 COMP,
00044 DECOMP
00045 };
00046 };
00047 }
00048 #endif