Public Member Functions | Protected Member Functions

gzfilebuf Class Reference

Gzipped file stream buffer class. More...

#include <zfstream.h>

Public Member Functions

gzfilebufopen (const char *name, int io_mode)
gzfilebufattach (int file_descriptor, int io_mode)
gzfilebufclose ()
int setcompressionlevel (int comp_level)
int setcompressionstrategy (int comp_strategy)
int is_open () const
virtual streampos seekoff (streamoff, ios::seek_dir, int)
virtual int sync ()
int setcompression (int comp_level, int comp_strategy=Z_DEFAULT_STRATEGY)
 Set compression level and strategy on the fly.
bool is_open () const
 Check if file is open.
gzfilebufopen (const char *name, std::ios_base::openmode mode)
 Open gzipped file.
gzfilebufattach (int fd, std::ios_base::openmode mode)
 Attach to already open gzipped file.
gzfilebufclose ()
 Close gzipped file.

Protected Member Functions

virtual int underflow ()
virtual int overflow (int=EOF)
bool open_mode (std::ios_base::openmode mode, char *c_mode) const
 Convert ios open mode int to mode string used by zlib.
virtual std::streamsize showmanyc ()
 Number of characters available in stream buffer.
virtual int_type underflow ()
 Fill get area from gzipped file.
virtual int_type overflow (int_type c=traits_type::eof())
 Write put area to gzipped file.
virtual std::streambuf * setbuf (char_type *p, std::streamsize n)
 Installs external stream buffer.
virtual int sync ()
 Flush stream buffer to file.

Detailed Description

Gzipped file stream buffer class.

This class implements basic_filebuf for gzipped files. It doesn't yet support seeking (allowed by zlib but slow/limited), putback and read/write access (tricky). Otherwise, it attempts to be a drop-in replacement for the standard file streambuf.

Definition at line 8 of file zfstream.h.


Member Function Documentation

gzfilebuf* attach ( int  fd,
std::ios_base::openmode  mode 
)

Attach to already open gzipped file.

Parameters:
fdFile descriptor.
modeOpen mode flags.
Returns:
this on success, NULL on failure.
gzfilebuf* close (  )

Close gzipped file.

Returns:
this on success, NULL on failure.
bool is_open (  ) const [inline]

Check if file is open.

Returns:
True if file is open.

Definition at line 57 of file zfstream.h.

gzfilebuf* open ( const char *  name,
std::ios_base::openmode  mode 
)

Open gzipped file.

Parameters:
nameFile name.
modeOpen mode flags.
Returns:
this on success, NULL on failure.
bool open_mode ( std::ios_base::openmode  mode,
char *  c_mode 
) const [protected]

Convert ios open mode int to mode string used by zlib.

Returns:
True if valid mode flag combination.
virtual int_type overflow ( int_type  c = traits_type::eof() ) [protected, virtual]

Write put area to gzipped file.

Parameters:
cExtra character to add to buffer contents.
Returns:
Non-EOF on success, EOF on error.

This actually writes characters in stream buffer to gzipped file. With unbuffered output this is done one character at a time.

virtual std::streambuf* setbuf ( char_type *  p,
std::streamsize  n 
) [protected, virtual]

Installs external stream buffer.

Parameters:
pPointer to char buffer.
nSize of external buffer.
Returns:
this on success, NULL on failure.

Call setbuf(0,0) to enable unbuffered output.

int setcompression ( int  comp_level,
int  comp_strategy = Z_DEFAULT_STRATEGY 
)

Set compression level and strategy on the fly.

Parameters:
comp_levelCompression level (see zlib.h for allowed values)
comp_strategyCompression strategy (see zlib.h for allowed values)
Returns:
Z_OK on success, Z_STREAM_ERROR otherwise.

Unfortunately, these parameters cannot be modified separately, as the previous zfstream version assumed. Since the strategy is seldom changed, it can default and setcompression(level) then becomes like the old setcompressionlevel(level).

virtual std::streamsize showmanyc (  ) [protected, virtual]

Number of characters available in stream buffer.

Returns:
Number of characters.

This indicates number of characters in get area of stream buffer. These characters can be read without accessing the gzipped file.

virtual int sync (  ) [protected, virtual]

Flush stream buffer to file.

Returns:
0 on success, -1 on error.

This calls underflow(EOF) to do the job.

virtual int_type underflow (  ) [protected, virtual]

Fill get area from gzipped file.

Returns:
First character in get area on success, EOF on error.

This actually reads characters from gzipped file to stream buffer. Always buffered.


The documentation for this class was generated from the following files: