Dv::Util::filterstreambuf< Filter > Class Template Reference

A streambuf specialization that cooperates with a filter class object. More...

#include <filterstreambuf.h>

List of all members.

Public Member Functions

 filterstreambuf (Filter &filter)
 The constructor remembers the filter to which I/O will be forwarded.
virtual ~filterstreambuf ()
 This is already virtual in streambuf.
const Filter & filter () const
Filter & filter ()
filterstreambuffilter (Filter &filter)
 Set underlying filter.
bool close ()
 Close -- indicate intention not to use the filter anymore.
virtual int sync ()
 Override iostream::sync().

Protected Member Functions

virtual int underflow ()
 Override iostream::underflow().
virtual int overflow (int c)
 Override iostream::overflow().

Private Attributes

Filter & filter_
char inbuf_ [1]
char outbuf_ [1]

Detailed Description

template<class Filter>
class Dv::Util::filterstreambuf< Filter >

A streambuf specialization that cooperates with a filter class object.

A filterstreambuf does not buffer data, but immediately passes them on (resp. obtains them from) to the filter.

The requirements for the Filter template parameter are as follows:

  class Filter {
  public:
    int get(); // return next input char or Traits::eof
    int put(int c); // output c if c!=EOF, return EOF if error
    int sync(); // synchronize filter, return 0 (ok) or -1 (EOF)
    void close(); // close filter, no obligations..
    ios_base::iostate state(); // return status of filter
  };

Here, state() is not used by filterstreambuf but may be convenient for streams based on a filterstreambuf: the constructor can use basic_ios::clear(filter.state()) to inherit the initial state of the filter.

See also:
Dv::Util::teestream

Definition at line 38 of file filterstreambuf.h.


Constructor & Destructor Documentation

template<class Filter >
Dv::Util::filterstreambuf< Filter >::filterstreambuf ( Filter &  filter  )  [inline, explicit]

The constructor remembers the filter to which I/O will be forwarded.

Parameters:
filter to which I/O operations will be forwarded.
Warning:
The filter is not copied, the management of the filter is not the filterstreambuf's responsibility (only a reference to the filter is kept).

Definition at line 47 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::inbuf_, and Dv::Util::filterstreambuf< Filter >::outbuf_.

template<class Filter >
virtual Dv::Util::filterstreambuf< Filter >::~filterstreambuf (  )  [inline, virtual]

This is already virtual in streambuf.

Definition at line 54 of file filterstreambuf.h.


Member Function Documentation

template<class Filter >
const Filter& Dv::Util::filterstreambuf< Filter >::filter (  )  const [inline]
Returns:
underlying filter (const version).

Definition at line 58 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::filter_.

template<class Filter >
Filter& Dv::Util::filterstreambuf< Filter >::filter (  )  [inline]
Returns:
underlying filter (non-const version).

Definition at line 62 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::filter_.

template<class Filter >
filterstreambuf& Dv::Util::filterstreambuf< Filter >::filter ( Filter &  filter  )  [inline]

Set underlying filter.

Parameters:
filter to which I/O operations will be forwarded.
Warning:
The filter is not copied, the management of the filter is not the filterstreambuf's responsibility.

Definition at line 70 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::filter_.

template<class Filter >
bool Dv::Util::filterstreambuf< Filter >::close (  )  [inline]

Close -- indicate intention not to use the filter anymore.

Returns:
return status of Dv::Util::filterstreambuf::sync.

Definition at line 75 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::filter_, and Dv::Util::filterstreambuf< Filter >::sync().

template<class Filter >
virtual int Dv::Util::filterstreambuf< Filter >::sync (  )  [inline, virtual]

Override iostream::sync().

Returns:
return status of filter_.sync() .

Definition at line 80 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::filter_.

Referenced by Dv::Util::filterstreambuf< Filter >::close().

template<class Filter >
virtual int Dv::Util::filterstreambuf< Filter >::underflow (  )  [inline, protected, virtual]

Override iostream::underflow().

Returns:
next input char or EOF

Definition at line 86 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::filter_, and Dv::Util::filterstreambuf< Filter >::inbuf_.

template<class Filter >
virtual int Dv::Util::filterstreambuf< Filter >::overflow ( int  c  )  [inline, protected, virtual]

Override iostream::overflow().

Parameters:
c next char to put
Returns:
status of filter_.put(c)

Definition at line 98 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::filter_.


Member Data Documentation

template<class Filter >
Filter& Dv::Util::filterstreambuf< Filter >::filter_ [private]
template<class Filter >
char Dv::Util::filterstreambuf< Filter >::inbuf_[1] [private]
template<class Filter >
char Dv::Util::filterstreambuf< Filter >::outbuf_[1] [private]

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

dvutil-1.0.10 [ 5 December, 2009]