# Template Class basic_istream

- Defined in File gzio.hpp

## Inheritance Relationships

### Base Type

- `public std::basic_istream< CharT, Traits >`

### Derived Type

- `public cif::gzio::basic_ifstream< CharT, Traits >` (Template Class basic_ifstream)

## Class Documentation

template<typename CharT, typename Traits>
class basic_istream : public std::basic_istream<CharT, Traits>

  An istream implementation that wraps a streambuf with a decompressing streambuf.

  This is an istream implementation that can take a source streambuf and then wraps this streambuf with a decompressing streambuf class defined above. The class inherits from std::basic_istream and offers all the associated functionality.

  Template Parameters:

    - CharT – Type of the character stream.

    - Traits – Traits for character type, defaults to char_traits<_CharT>.

  Subclassed by cif::gzio::basic_ifstream< CharT, Traits >

  Public Functions

  inline basic_istream(basic_istream &&rhs)

    Regular move constructor.

  inline basic_istream &operator=(basic_istream &&rhs)

    Regular move operator=.

  inline explicit basic_istream(upstreambuf_type *buf)

    Construct an istream with the passed in streambuf buf.

    This constructor will initialize the zlib code with the buf streambuf.

    Parameters:

      buf – The streambuf that provides the compressed data

  Protected Functions

  inline basic_istream()
  inline void init_z(upstreambuf_type *sb)

    Initialise internals with streambuf sb.

    This will sniff the content in sb and decide upon what is found what implementation is used. If it doesn’t look like compressed data the sb streambuf is used without any decompression being done.

    Parameters:

      sb – The upstream streambuf class

  Protected Attributes

  std::unique_ptr<z_streambuf_type> m_gziobuf

    Our streambuf class.