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