Provided by: libbobcat-dev_6.04.00-1ubuntu3_amd64 bug

NAME

       FBB::OFilterBuf - Base class for std::ostream filtering

SYNOPSIS

       #include <bobcat/ofilterbuf>
       Linking option: -lbobcat

DESCRIPTION

       The FBB::OFilterBuf class is a specialization of the std::streambuf class and can be used as a base class
       for classes implementing ostream-filtering.

       Ostream  filtering  is defined here as the process by which inserted characters are subject to processing
       before they are passed on to another (filtered) ostream object (or they may be rejected).  The  filtering
       may also result in inserting additional information into the filtered ostream.

       Chaining  of  filters  is  also possible: the filtered ostream may itself use an OFilterBuf to filter its
       received information before passing it on to yet another ostream.

       As OFilterBuf inherits from std::streambuf an OFilterBuf object can be used to provide an ostream  object
       with a std::streambuf. Information inserted into such a stream travels the following route:

       o      The information is converted to characters using the standard conversion facilities implemented by
              std::ostream objects. E.g., when inserting the value 123 this value is converted to the characters
              ’1’, ’2’ and ’3’, respectively.

       o      Each of the characters is then offered (in turn) to the std::streambuf that is associated with the
              ostream object. In particular, the std::streambuf’s overflow() member is called.

       o      OFstreamBuf’s  default  overflow()  function  ignores characters, but specializations can override
              overflow() to process the received characters ad lib.

       o      A overriding overflow() function has access to the member OFstreambuf::out() which is a  reference
              to  the std::ostream receiving the filtered information.  To implement a simple copy-filter (i.e.,
              all characters are accepted as-is) a class must be derived from OFilterBuf providing an overriding
              implementation of overflow(), e.g., as follows:

                  int DerivedClass::overflow(int ch)
                  {
                      out().put(ch);
                  }

              Next this std::streambuf specialization can be associated with an ostream into  which  information
              to be `copy filtered’ can be inserted (cf. the EXAMPLE section below).

NAMESPACE

       FBB
       All  constructors,  members,  operators  and manipulators, mentioned in this man-page, are defined in the
       namespace FBB.

INHERITS FROM

       std::streambuf

CONSTRUCTORS

       As OFilterBuf should be used as a base class all its constructors are protected.

       o      OFilterBuf():
              This constructor creates a OFilterBuf object without associating it with a destination  (filtered)
              ostream.

       o      OFilterBuf(std::string const &fname, openmode mode = std::ios::out):
              This  constructor  creates  a  OFilterBuf  object  and  opens a private std::ofstream object whose
              filename is provided and that should receive the filtered information.

       o      OFilterBuf(std::ostream &out):
              This constructor creates a OFilterBuf object and will insert any  filtered  information  into  the
              provided  ostream object.

       Copy and move constructors (and assignment operators) are not available.

PROTECTED MEMBER FUNCTIONS

       Except for the public members inherited from std::ostreambuf all of OFilterBuf’s members are protected.

       Derived classes should provide their own implementation of int underflow(int ch) to implement filtering.

       o      void reset(std::string const &fname, openmode mode = std::ios::out):
              This  member flushes the current destination (filtered) std::ostream and associates the OFilterBuf
              object  with  an  std::ofstream  object  whose  filename  is  provided  and  that  should  receive
              subsequently filtered information.

       o      void reset(std::ostream &out):
              This  member  flushes  the  current  destination (filtered) std::ostream object and associates the
              OFilterBuf object with the provided ostream object.

       o      std::ostream &out() const:
              This member is available to derived classes to insert information into the destination  (filtered)
              stream.

EXAMPLE

           #include <iostream>
           #include <cctype>
           #include <bobcat/ofilterbuf>

           struct NoDigits: public FBB::OFilterBuf
           {
               NoDigits(std::ostream &out)
               :
                   OFilterBuf(out)
               {}

               private:
                   int overflow(int ch) override
                   {
                       if (not isdigit(ch))
                           out().put(ch);
                       return ch;
                   }
           };

           using namespace FBB;
           using namespace std;

           int main()
           {
               NoDigits nod(cout);     // no digits to cout
               ostream out(&nod);

               out << cin.rdbuf();      // rm digits from cin
           }

FILES

       bobcat/ofilterbuf - defines the class interface

SEE ALSO

       bobcat(7), ifilterbuf(3bobcat)

BUGS

       None Reported.

BOBCAT PROJECT FILES

       o      https://fbb-git.gitlab.io/bobcat/: gitlab project page;

       o      bobcat_6.04.00-x.dsc: detached signature;

       o      bobcat_6.04.00-x.tar.gz: source archive;

       o      bobcat_6.04.00-x_i386.changes: change log;

       o      libbobcat1_6.04.00-x_*.deb: debian package containing the libraries;

       o      libbobcat1-dev_6.04.00-x_*.deb: debian package containing the libraries, headers and manual pages;

BOBCAT

       Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.

COPYRIGHT

       This is free software, distributed under the terms of the GNU General Public License (GPL).

AUTHOR

       Frank B. Brokken (f.b.brokken@rug.nl).

libbobcat-dev_6.04.00                               2005-2023                           FBB::OFilterBuf(3bobcat)