8 class gzfilebuf
: public streambuf
{
15 gzfilebuf
*open( const char *name
, int io_mode
);
16 gzfilebuf
*attach( int file_descriptor
, int io_mode
);
19 int setcompressionlevel( int comp_level
);
20 int setcompressionstrategy( int comp_strategy
);
22 inline int is_open() const { return (file
!=NULL
); }
24 virtual streampos
seekoff( streamoff
, ios::seek_dir
, int );
30 virtual int underflow();
31 virtual int overflow( int = EOF
);
37 short own_file_descriptor
;
44 class gzfilestream_common
: virtual public ios
{
46 friend class gzifstream
;
47 friend class gzofstream
;
48 friend gzofstream
&setcompressionlevel( gzofstream
&, int );
49 friend gzofstream
&setcompressionstrategy( gzofstream
&, int );
52 virtual ~gzfilestream_common();
54 void attach( int fd
, int io_mode
);
55 void open( const char *name
, int io_mode
);
59 gzfilestream_common();
68 class gzifstream
: public gzfilestream_common
, public istream
{
73 gzifstream( const char *name
, int io_mode
= ios::in
);
74 gzifstream( int fd
, int io_mode
= ios::in
);
76 virtual ~gzifstream();
80 class gzofstream
: public gzfilestream_common
, public ostream
{
85 gzofstream( const char *name
, int io_mode
= ios::out
);
86 gzofstream( int fd
, int io_mode
= ios::out
);
88 virtual ~gzofstream();
92 template<class T
> class gzomanip
{
93 friend gzofstream
&operator<<(gzofstream
&, const gzomanip
<T
> &);
95 gzomanip(gzofstream
&(*f
)(gzofstream
&, T
), T v
) : func(f
), val(v
) { }
97 gzofstream
&(*func
)(gzofstream
&, T
);
101 template<class T
> gzofstream
&operator<<(gzofstream
&s
, const gzomanip
<T
> &m
)
103 return (*m
.func
)(s
, m
.val
);
106 inline gzofstream
&setcompressionlevel( gzofstream
&s
, int l
)
108 (s
.rdbuf())->setcompressionlevel(l
);
112 inline gzofstream
&setcompressionstrategy( gzofstream
&s
, int l
)
114 (s
.rdbuf())->setcompressionstrategy(l
);
118 inline gzomanip
<int> setcompressionlevel(int l
)
120 return gzomanip
<int>(&setcompressionlevel
,l
);
123 inline gzomanip
<int> setcompressionstrategy(int l
)
125 return gzomanip
<int>(&setcompressionstrategy
,l
);