Ruby: gzfilebuf Class Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Public Member Functions | Protected Member Functions
gzfilebuf Class Reference

Gzipped file stream buffer class. More...

`#include <zfstream.h>`

## Public Member Functions
| 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)
int | is_open () const
virtual streampos | seekoff (streamoff, ios::seek_dir, int)
virtual int | sync ()
| gzfilebuf ()
virtual | ~gzfilebuf ()
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...

## 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.

## Constructor & Destructor Documentation

## ◆ gzfilebuf() [1/2]

gzfilebuf::gzfilebuf | ( |  | ) |

## ◆ ~gzfilebuf() [1/2]

virtual gzfilebuf::~gzfilebuf | ( |  | ) |
| virtual

## ◆ gzfilebuf() [2/2]

gzfilebuf::gzfilebuf | ( |  | ) |

## ◆ ~gzfilebuf() [2/2]

virtual gzfilebuf::~gzfilebuf | ( |  | ) |
| virtual

## Member Function Documentation

## ◆ attach() [1/2]

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

Attach to already open gzipped file.

Parameters

  fd | File descriptor.
  mode | Open mode flags.

Returns
  `this` on success, NULL on failure.

## ◆ attach() [2/2]

gzfilebuf * gzfilebuf::attach | ( | int | file_descriptor,
|  | int | io_mode
| ) |  |

## ◆ close() [1/2]

gzfilebuf * gzfilebuf::close | ( |  | ) |

## ◆ close() [2/2]

gzfilebuf * gzfilebuf::close | ( |  | ) |

Close gzipped file.

Returns
  `this` on success, NULL on failure.

## ◆ is_open() [1/2]

int gzfilebuf::is_open | ( |  | ) | const
| inline

Definition at line 22 of file zfstream.h.

References NULL.

Referenced by gzifstream::is_open(), and gzofstream::is_open().

## ◆ is_open() [2/2]

bool gzfilebuf::is_open | ( |  | ) | const
| inline

Check if file is open.

Returns
  True if file is open.

Definition at line 57 of file zfstream.h.

References NULL.

## ◆ open() [1/2]

gzfilebuf * gzfilebuf::open | ( | const char * | name,
|  | int | io_mode
| ) |  |

## ◆ open() [2/2]

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

Open gzipped file.

Parameters

  name | File name.
  mode | Open mode flags.

Returns
  `this` on success, NULL on failure.

## ◆ open_mode()

bool gzfilebuf::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.

## ◆ overflow() [1/2]

virtual int gzfilebuf::overflow | ( | int | = `EOF` | ) |
| protectedvirtual

## ◆ overflow() [2/2]

virtual int_type gzfilebuf::overflow | ( | int_type | c = `traits_type::eof()` | ) |
| protectedvirtual

Write put area to gzipped file.

Parameters

  c | Extra 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.

## ◆ seekoff()

virtual streampos gzfilebuf::seekoff | ( | streamoff | ,
|  | ios::seek_dir | ,
|  | int |
| ) |  |
| virtual

## ◆ setbuf()

virtual std::streambuf * gzfilebuf::setbuf | ( | char_type * | p,
|  | std::streamsize | n
| ) |  |
| protectedvirtual

Installs external stream buffer.

Parameters

  p | Pointer to char buffer.
  n | Size of external buffer.

Returns
  `this` on success, NULL on failure.

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

## ◆ setcompression()

int gzfilebuf::setcompression | ( | int | comp_level,
|  | int | comp_strategy = `Z_DEFAULT_STRATEGY`
| ) |  |

Set compression level and strategy on the fly.

Parameters

  comp_level | Compression level (see zlib.h for allowed values)
  comp_strategy | Compression 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).

## ◆ setcompressionlevel()

int gzfilebuf::setcompressionlevel | ( | int | comp_level | ) |

## ◆ setcompressionstrategy()

int gzfilebuf::setcompressionstrategy | ( | int | comp_strategy | ) |

## ◆ showmanyc()

virtual std::streamsize gzfilebuf::showmanyc | ( |  | ) |
| protectedvirtual

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.

## ◆ sync() [1/2]

virtual int gzfilebuf::sync | ( |  | ) |
| virtual

## ◆ sync() [2/2]

virtual int gzfilebuf::sync | ( |  | ) |
| protectedvirtual

Flush stream buffer to file.

Returns
  0 on success, -1 on error.

This calls underflow(EOF) to do the job.

## ◆ underflow() [1/2]

virtual int gzfilebuf::underflow | ( |  | ) |
| protectedvirtual

## ◆ underflow() [2/2]

virtual int_type gzfilebuf::underflow | ( |  | ) |
| protectedvirtual

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:

- ext/zlib/zlib-1.2.13/contrib/iostream/zfstream.h
- ext/zlib/zlib-1.2.13/contrib/iostream3/zfstream.h