Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

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

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

#include <filterstreambuf.h>

Collaboration diagram for Dv::Util::filterstreambuf< Filter >:

Collaboration graph
[legend]
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 39 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 48 of file filterstreambuf.h.

References Dv::Util::filterstreambuf< Filter >::filter_, 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 55 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 59 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 63 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 71 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 77 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 83 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 90 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 102 of file filterstreambuf.h.

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


Member Data Documentation

template<class Filter>
Filter& Dv::Util::filterstreambuf< Filter >::filter_ [private]
 

Definition at line 105 of file filterstreambuf.h.

Referenced by Dv::Util::filterstreambuf< Filter >::close(), Dv::Util::filterstreambuf< Filter >::filter(), Dv::Util::filterstreambuf< Filter >::filterstreambuf(), Dv::Util::filterstreambuf< Filter >::overflow(), Dv::Util::filterstreambuf< Filter >::sync(), and Dv::Util::filterstreambuf< Filter >::underflow().

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

Definition at line 106 of file filterstreambuf.h.

Referenced by Dv::Util::filterstreambuf< Filter >::filterstreambuf(), and Dv::Util::filterstreambuf< Filter >::underflow().

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

Definition at line 107 of file filterstreambuf.h.

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


The documentation for this class was generated from the following file:
dvutil-0.13.15 [30 December, 2004]