00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00043 #ifndef CCXX_ZSTREAM_H_
00044 #define CCXX_ZSTREAM_H_
00045
00046 #ifndef CCXX_MISSING_H_
00047 #include <cc++/missing.h>
00048 #endif
00049
00050 #ifndef CCXX_THREAD_H_
00051 #include <cc++/thread.h>
00052 #endif
00053
00054 #ifndef CCXX_STRING_H_
00055 #include <cc++/string.h>
00056 #endif
00057
00058 #ifndef CCXX_EXCEPTION_H_
00059 #include <cc++/exception.h>
00060 #endif
00061
00062 #include <zlib.h>
00063
00064 #ifdef CCXX_NAMESPACES
00065 namespace ost {
00066 #endif
00067
00068 #ifdef COMMON_STD_EXCEPTION
00069
00070 class __EXPORT IOZException : public IOException
00071 {
00072 public:
00073 IOZException(const String &str) : IOException(str) {};
00074 };
00075
00076 #endif
00077
00078 class __EXPORT IZStream : protected std::streambuf, public std::istream
00079 {
00080 private:
00081 gzFile fp;
00082 int doallocate();
00083 bool throwflag;
00084
00085 protected:
00086 size_t bufsize;
00087 char *gbuf;
00088
00089 void allocate(size_t size);
00090
00091 int underflow();
00092
00093 int uflow();
00094
00095 public:
00096 IZStream(bool throwflag = false);
00097 IZStream(const char *name, size_t size = 512, bool tf = false);
00098
00099 bool isOpen(void);
00100
00101 void close(void);
00102
00103 virtual ~IZStream();
00104
00105 void open(const char *name, size_t size = 512);
00106
00107 inline size_t getBufferSize(void)
00108 {return bufsize;};
00109 };
00110
00111 class __EXPORT OZStream : protected std::streambuf, public std::ostream
00112 {
00113 private:
00114 gzFile fp;
00115 int doallocate();
00116 bool throwflag;
00117
00118 protected:
00119 size_t bufsize;
00120 char *pbuf;
00121
00122 void allocate(size_t size);
00123
00124 int overflow(int ch);
00125
00126 public:
00127 OZStream(bool throwflag = false);
00128 OZStream(const char *name, int level = Z_DEFAULT_COMPRESSION, size_t size = 512, bool tf = false);
00129
00130 bool isOpen(void);
00131
00132 void close(void);
00133
00134 virtual ~OZStream();
00135
00136 void open(const char *name, int level = Z_DEFAULT_COMPRESSION, size_t size = 512);
00137
00138 inline size_t getBufferSize(void)
00139 {return bufsize;};
00140 };
00141
00142 #ifdef CCXX_NAMESPACES
00143 }
00144 #endif
00145
00146 #endif
00147