Rosetta  2020.37
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT > Class Template Reference

A stream decorator that takes compressed input and unzips it to a istream. More...

#include <zipstream.hpp>

Inheritance diagram for zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >:
Inheritance graph
[legend]

Public Types

typedef std::basic_streambuf
< Elem, Tr > 
basic_streambuf_type
 
typedef std::basic_istream
< Elem, Tr > & 
istream_reference
 
typedef Elem char_type
 
typedef ElemA char_allocator_type
 
typedef ByteT byte_type
 
typedef ByteAT byte_allocator_type
 
typedef byte_typebyte_buffer_type
 
typedef std::vector< byte_type,
byte_allocator_type
byte_vector_type
 
typedef std::vector< char_type,
char_allocator_type
char_vector_type
 
typedef Tr::int_type int_type
 

Public Member Functions

 basic_unzip_streambuf (istream_reference istream_, size_t window_size_, size_t read_buffer_size_, size_t input_buffer_size_)
 Construct an unzip stream. More...
 
 ~basic_unzip_streambuf () override
 
int_type underflow () override
 
istream_reference get_istream ()
 returns the compressed input istream More...
 
z_stream & get_zip_stream ()
 returns the zlib stream structure More...
 
int get_zerr () const
 returns the latest zlib error state More...
 
uLong get_crc () const
 returns the crc of the uncompressed data so far More...
 
uLong get_out_size () const
 returns the number of uncompressed bytes More...
 
uLong get_in_size () const
 returns the number of read compressed bytes More...
 

Private Member Functions

void put_back_from_zip_stream ()
 
std::streamsize unzip_from_stream (char_type *, std::streamsize)
 
size_t fill_input_buffer ()
 

Private Attributes

istream_reference m_istream
 
z_stream m_zip_stream
 
int m_err
 
byte_vector_type m_input_buffer
 
char_vector_type m_buffer
 
uLong m_crc
 

Detailed Description

template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
class zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >

A stream decorator that takes compressed input and unzips it to a istream.

Note
The class wraps up the deflate method of the zlib library 1.1.4 http://www.gzip.org/zlib/

Member Typedef Documentation

template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef std::basic_streambuf< Elem, Tr > zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::basic_streambuf_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef ByteAT zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::byte_allocator_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef byte_type* zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::byte_buffer_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef ByteT zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::byte_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef std::vector< byte_type, byte_allocator_type > zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::byte_vector_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef ElemA zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::char_allocator_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef Elem zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::char_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef std::vector< char_type, char_allocator_type > zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::char_vector_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef Tr::int_type zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::int_type
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
typedef std::basic_istream< Elem, Tr >& zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::istream_reference

Constructor & Destructor Documentation

template<typename Elem , typename Tr , typename ElemA , typename ByteT , typename ByteAT >
zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::basic_unzip_streambuf ( istream_reference  istream_,
size_t  window_size_,
size_t  read_buffer_size_,
size_t  input_buffer_size_ 
)
template<typename Elem , typename Tr , typename ElemA , typename ByteT , typename ByteAT >
zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::~basic_unzip_streambuf ( )
override

Member Function Documentation

template<typename Elem , typename Tr , typename ElemA , typename ByteT , typename ByteAT >
size_t zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::fill_input_buffer ( )
private
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
uLong zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::get_crc ( ) const
inline

returns the crc of the uncompressed data so far

References zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_crc.

template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
uLong zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::get_in_size ( ) const
inline

returns the number of read compressed bytes

References zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_zip_stream.

template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
istream_reference zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::get_istream ( )
inline
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
uLong zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::get_out_size ( ) const
inline

returns the number of uncompressed bytes

References zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_zip_stream.

template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
int zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::get_zerr ( ) const
inline

returns the latest zlib error state

References zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_err.

template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
z_stream& zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::get_zip_stream ( )
inline
template<typename Elem , typename Tr , typename ElemA , typename ByteT , typename ByteAT >
void zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::put_back_from_zip_stream ( )
private
template<typename Elem , typename Tr , typename ElemA , typename ByteT , typename ByteAT >
basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::int_type zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::underflow ( )
override
template<typename Elem , typename Tr , typename ElemA , typename ByteT , typename ByteAT >
std::streamsize zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::unzip_from_stream ( char_type buffer_,
std::streamsize  buffer_size_ 
)
private

Member Data Documentation

template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
char_vector_type zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_buffer
private
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
uLong zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_crc
private
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
int zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_err
private
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
byte_vector_type zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_input_buffer
private
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
istream_reference zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_istream
private
template<typename Elem, typename Tr = std::char_traits< Elem >, typename ElemA = std::allocator< Elem >, typename ByteT = unsigned char, typename ByteAT = std::allocator< ByteT >>
z_stream zlib_stream::basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::m_zip_stream
private

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