43 #ifdef GZSTREAM_NAMESPACE
44 namespace GZSTREAM_NAMESPACE {
53 static const int bufferSize = 47+256;
57 char buffer[bufferSize];
65 int w = pptr() - pbase();
66 if ( gzwrite( file, pbase(),
w) !=
w)
73 setp( buffer, buffer + (bufferSize-1));
87 if ((mode & std::ios::ate) || (mode & std::ios::app)
88 || ((mode & std::ios::in) && (mode & std::ios::out)))
91 char* fmodeptr = fmode;
92 if ( mode & std::ios::in)
94 else if ( mode & std::ios::out)
98 file = gzopen( name, fmode);
112 if ( gzclose( file) == Z_OK)
119 if ( gptr() && ( gptr() < egptr()))
120 return *
reinterpret_cast<unsigned char *
>( gptr());
122 if ( ! (mode & std::ios::in) || ! opened)
125 int n_putback = gptr() - eback();
128 memcpy( buffer + (4 - n_putback), gptr() - n_putback, n_putback);
130 int num = gzread( file, buffer+4, bufferSize-4);
135 setg( buffer + (4 - n_putback),
140 return *
reinterpret_cast<unsigned char *
>( gptr());
144 if ( ! ( mode & std::ios::out) || ! opened)
150 if ( flush_buffer() == EOF)
159 if ( pptr() && pptr() > pbase()) {
160 if ( flush_buffer() == EOF)
180 void open(
const char* name,
int open_mode) {
181 if ( ! buf.
open( name, open_mode))
182 clear( rdstate() | std::ios::badbit);
188 clear( rdstate() | std::ios::badbit );
206 igzstream(
const char* name,
int open_mode = std::ios::in)
208 void open(
const char* name,
int open_mode = std::ios::in) {
218 void open(
const char* name,
int open_mode = std::ios::out) {
223 #ifdef GZSTREAM_NAMESPACE
gzstreambase(const char *name, int mode)
void open(const char *name, int open_mode)
gzstreambuf * open(const char *name, int open_mode)
virtual int overflow(int c=EOF)
igzstream(const char *name, int open_mode=std::ios::in)
void open(const char *name, int open_mode=std::ios::in)
ogzstream(const char *name, int mode=std::ios::out)
void open(const char *name, int open_mode=std::ios::out)
void close(std::istream *pf)
Close file.
T * open(const std::string &file_name)
Open file.