| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | 
							
- #ifndef zfstream_h
 
- #define zfstream_h
 
- #include <fstream.h>
 
- #include "zlib.h"
 
- class gzfilebuf : public streambuf {
 
- public:
 
-   gzfilebuf( );
 
-   virtual ~gzfilebuf();
 
-   gzfilebuf *open( const char *name, int io_mode );
 
-   gzfilebuf *attach( int file_descriptor, int io_mode );
 
-   gzfilebuf *close();
 
-   int setcompressionlevel( int comp_level );
 
-   int setcompressionstrategy( int comp_strategy );
 
-   inline int is_open() const { return (file !=NULL); }
 
-   virtual streampos seekoff( streamoff, ios::seek_dir, int );
 
-   virtual int sync();
 
- protected:
 
-   virtual int underflow();
 
-   virtual int overflow( int = EOF );
 
- private:
 
-   gzFile file;
 
-   short mode;
 
-   short own_file_descriptor;
 
-   int flushbuf();
 
-   int fillbuf();
 
- };
 
- class gzfilestream_common : virtual public ios {
 
-   friend class gzifstream;
 
-   friend class gzofstream;
 
-   friend gzofstream &setcompressionlevel( gzofstream &, int );
 
-   friend gzofstream &setcompressionstrategy( gzofstream &, int );
 
- public:
 
-   virtual ~gzfilestream_common();
 
-   void attach( int fd, int io_mode );
 
-   void open( const char *name, int io_mode );
 
-   void close();
 
- protected:
 
-   gzfilestream_common();
 
- private:
 
-   gzfilebuf *rdbuf();
 
-   gzfilebuf buffer;
 
- };
 
- class gzifstream : public gzfilestream_common, public istream {
 
- public:
 
-   gzifstream();
 
-   gzifstream( const char *name, int io_mode = ios::in );
 
-   gzifstream( int fd, int io_mode = ios::in );
 
-   virtual ~gzifstream();
 
- };
 
- class gzofstream : public gzfilestream_common, public ostream {
 
- public:
 
-   gzofstream();
 
-   gzofstream( const char *name, int io_mode = ios::out );
 
-   gzofstream( int fd, int io_mode = ios::out );
 
-   virtual ~gzofstream();
 
- };
 
- template<class T> class gzomanip {
 
-   friend gzofstream &operator<<(gzofstream &, const gzomanip<T> &);
 
- public:
 
-   gzomanip(gzofstream &(*f)(gzofstream &, T), T v) : func(f), val(v) { }
 
- private:
 
-   gzofstream &(*func)(gzofstream &, T);
 
-   T val;
 
- };
 
- template<class T> gzofstream &operator<<(gzofstream &s, const gzomanip<T> &m)
 
- {
 
-   return (*m.func)(s, m.val);
 
- }
 
- inline gzofstream &setcompressionlevel( gzofstream &s, int l )
 
- {
 
-   (s.rdbuf())->setcompressionlevel(l);
 
-   return s;
 
- }
 
- inline gzofstream &setcompressionstrategy( gzofstream &s, int l )
 
- {
 
-   (s.rdbuf())->setcompressionstrategy(l);
 
-   return s;
 
- }
 
- inline gzomanip<int> setcompressionlevel(int l)
 
- {
 
-   return gzomanip<int>(&setcompressionlevel,l);
 
- }
 
- inline gzomanip<int> setcompressionstrategy(int l)
 
- {
 
-   return gzomanip<int>(&setcompressionstrategy,l);
 
- }
 
- #endif
 
 
  |