ThingWorx C SDK
|
Gzipped file stream buffer class. More...
#include <zfstream.h>
Public Member Functions | |
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) |
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. More... | |
bool | is_open () const |
Check if file is open. More... | |
gzfilebuf * | open (const char *name, std::ios_base::openmode mode) |
Open gzipped file. More... | |
gzfilebuf * | attach (int fd, std::ios_base::openmode mode) |
Attach to already open gzipped file. More... | |
gzfilebuf * | close () |
Close gzipped file. More... | |
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. More... | |
virtual std::streamsize | showmanyc () |
Number of characters available in stream buffer. More... | |
virtual int_type | underflow () |
Fill get area from gzipped file. More... | |
virtual int_type | overflow (int_type c=traits_type::eof()) |
Write put area to gzipped file. More... | |
virtual std::streambuf * | setbuf (char_type *p, std::streamsize n) |
Installs external stream buffer. More... | |
virtual int | sync () |
Flush stream buffer to file. More... | |
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.
gzfilebuf * gzfilebuf::attach | ( | int | fd, |
std::ios_base::openmode | mode | ||
) |
Attach to already open gzipped file.
fd | File descriptor. |
mode | Open mode flags. |
this
on success, NULL on failure. gzfilebuf* gzfilebuf::close | ( | ) |
Close gzipped file.
this
on success, NULL on failure.
|
inline |
Check if file is open.
gzfilebuf * gzfilebuf::open | ( | const char * | name, |
std::ios_base::openmode | mode | ||
) |
Open gzipped file.
name | File name. |
mode | Open mode flags. |
this
on success, NULL on failure.
|
protected |
Convert ios open mode int to mode string used by zlib.
|
protectedvirtual |
Write put area to gzipped file.
c | Extra character to add to buffer contents. |
This actually writes characters in stream buffer to gzipped file. With unbuffered output this is done one character at a time.
|
protectedvirtual |
Installs external stream buffer.
p | Pointer to char buffer. |
n | Size of external buffer. |
this
on success, NULL on failure.Call setbuf(0,0) to enable unbuffered output.
int gzfilebuf::setcompression | ( | int | comp_level, |
int | comp_strategy = Z_DEFAULT_STRATEGY |
||
) |
Set compression level and strategy on the fly.
comp_level | Compression level (see zlib.h for allowed values) |
comp_strategy | Compression strategy (see zlib.h for allowed values) |
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).
|
protectedvirtual |
Number of characters available in stream buffer.
This indicates number of characters in get area of stream buffer. These characters can be read without accessing the gzipped file.
|
protectedvirtual |
Flush stream buffer to file.
This calls underflow(EOF) to do the job.
|
protectedvirtual |
Fill get area from gzipped file.
This actually reads characters from gzipped file to stream buffer. Always buffered.