38 #ifdef GZSTREAM_NAMESPACE
39 namespace GZSTREAM_NAMESPACE {
48 static const int bufferSize = 47+256;
52 char buffer[bufferSize];
60 int w = pptr() - pbase();
61 if ( gzwrite( file, pbase(), w) != w)
68 setp( buffer, buffer + (bufferSize-1));
82 if ((mode & std::ios::ate) || (mode & std::ios::app)
83 || ((mode & std::ios::in) && (mode & std::ios::out)))
86 char* fmodeptr = fmode;
87 if ( mode & std::ios::in)
89 else if ( mode & std::ios::out)
93 file = gzopen( name, fmode);
104 if ( gzclose( file) == Z_OK)
111 if ( gptr() && ( gptr() < egptr()))
112 return *
reinterpret_cast<unsigned char *
>( gptr());
114 if ( ! (mode & std::ios::in) || ! opened)
117 int n_putback = gptr() - eback();
120 memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback);
122 int num = gzread( file, buffer+4, bufferSize-4);
127 setg( buffer + (4 - n_putback),
132 return *
reinterpret_cast<unsigned char *
>( gptr());
136 if ( ! ( mode & std::ios::out) || ! opened)
142 if ( flush_buffer() == EOF)
151 if ( pptr() && pptr() > pbase()) {
152 if ( flush_buffer() == EOF)
172 void open(
const char* name,
int open_mode) {
173 if ( ! buf.
open( name, open_mode))
174 clear( rdstate() | std::ios::badbit);
180 clear( rdstate() | std::ios::badbit);
194 igzstream(
const char* name,
int open_mode = std::ios::in)
195 :
gzstreambase( name, open_mode), std::istream( &buf) {}
197 void open(
const char* name,
int open_mode = std::ios::in) {
208 void open(
const char* name,
int open_mode = std::ios::out) {
213 #ifdef GZSTREAM_NAMESPACE
Definition: gzstream.h:159
gzstreambase(const char *name, int mode)
Definition: gzstream.h:165
gzstreambuf buf
Definition: gzstream.h:161
~gzstreambase()
Definition: gzstream.h:169
gzstreambuf * rdbuf()
Definition: gzstream.h:182
void open(const char *name, int open_mode)
Definition: gzstream.h:172
void close()
Definition: gzstream.h:177
gzstreambase()
Definition: gzstream.h:164
Definition: gzstream.h:46
int flush_buffer()
Definition: gzstream.h:57
char opened
Definition: gzstream.h:53
~gzstreambuf()
Definition: gzstream.h:76
virtual int underflow()
Definition: gzstream.h:110
gzstreambuf * open(const char *name, int open_mode)
Definition: gzstream.h:77
int is_open()
Definition: gzstream.h:74
gzFile file
Definition: gzstream.h:51
gzstreambuf * close()
Definition: gzstream.h:100
virtual int overflow(int c=EOF)
Definition: gzstream.h:135
virtual int sync()
Definition: gzstream.h:147
int mode
Definition: gzstream.h:54
gzstreambuf()
Definition: gzstream.h:67
Definition: gzstream.h:191
gzstreambuf * rdbuf()
Definition: gzstream.h:196
igzstream(const char *name, int open_mode=std::ios::in)
Definition: gzstream.h:194
void open(const char *name, int open_mode=std::ios::in)
Definition: gzstream.h:197
igzstream()
Definition: gzstream.h:193
Definition: gzstream.h:202
gzstreambuf * rdbuf()
Definition: gzstream.h:207
ogzstream()
Definition: gzstream.h:204
ogzstream(const char *name, int mode=std::ios::out)
Definition: gzstream.h:205
void open(const char *name, int open_mode=std::ios::out)
Definition: gzstream.h:208