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( short comp_level
);
20 int setcompressionstrategy( short 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
,
102 const gzomanip
<T
> &m
) {
103 return (*m
.func
)(s
, m
.val
);
107 inline gzofstream
&setcompressionlevel( gzofstream
&s
, int l
) {
108 (s
.rdbuf())->setcompressionlevel(l
);
112 inline gzofstream
&setcompressionstrategy( gzofstream
&s
, int l
) {
113 (s
.rdbuf())->setcompressionstrategy(l
);
117 inline gzomanip
<int> setcompressionlevel(int l
)
119 return gzomanip
<int>(&setcompressionlevel
,l
);
122 inline gzomanip
<int> setcompressionstrategy(int l
)
124 return gzomanip
<int>(&setcompressionstrategy
,l
);