Provided by: libbobcat-dev_4.01.03-2ubuntu1_amd64 bug

NAME

       FBB::MultiStreambuf - Selectively writes multiple streams

SYNOPSIS

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

DESCRIPTION

       The  FBB::MultiStreambuf  class  is  a specialization of std::streambuf. It can be used to
       write selectively to multiple std::ostreams. Each std::ostream that is associated  with  a
       MultiStreambuf  is  given  a  mode-tag indicating whether the stream should always be used
       when information is inserted into the MultiStreambuf, just once, or not at  all.  Each  of
       the stream’s mode-tags may be set to any of the defined tag-values.

       When  the address of a MultiStreambuf is used to initialize a std::ostream the constructed
       std::ostream becomes an output-multiplexer: by inserting information into the std::ostream
       object,  all  std::ostream objects added to its MultiStreambuf buffer which have an active
       mode receive that information.

       An MultiStreambuf object should be outlived by all active streams that are associated with
       it.

       MultiStreambuf  objects  refer  to  std::ostreams which are passed to it, and not to their
       std::streambufs. So it is possible to change these std::ostream’s std::streambufs  without
       reinstalling the std::ostreams themselves.

       No  assumptions  should be made about the order in which the std::ostream objects that are
       associated with the MultiStreambuf objects are visited when information is inserted.

NAMESPACE

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

INHERITS FROM

       std::streambuf

ENUMERATION

       In the Mode enumeration the following values are defined:

       o      OFF:
              A  std::ostream having this mode will not be used when information is inserted into
              a MultiStreambuf

       o      ON:
              A std::ostream having this mode will be used when information is  inserted  into  a
              MultiStreambuf

       o      ONCE:
              A  std::ostream  having  this  mode  will  be  used  once,  until the next flushing
              operation, when information is inserted into an MultiStreambuf

       o      RESET:
              A std::ostream having this mode will not be used when information is inserted  into
              a MultiStreambuf. At a flush operation all ONCE modes will be set to RESET

       o      ALL:
              This  mode is used in combination with the member remove to remove all std::ostream
              elements matching a specified std::ostream argument.

TYPES

       The following subtypes are defined in the class FBB:MultiStreambuf:

       o      iterator:
              This is a synonym of std::vector<stream>::iterator

       o      const_iterator:
              This is a synonym of std::vector<stream>::const_iterator

NESTED CLASS

       The class MultiStreambuf::stream is defined as a nested class of MultiStreambuf. It offers
       the following constructor and public members:

       o      stream(std::ostream &os, Mode mode = ON):
              The constructor stores a std::ostream object, and associates a Mode value with it.

       o      void setMode(Mode mode):
              This member is used to redefine the stream’s  Mode value.

       o      void mode() const:
              This member returns the  stream’s  Mode value.

       o      operator std::ostream &():
              This member returns the  stream’s  std::ostream.

CONSTRUCTORS

       o      MultiStreambuf():
              The   default  constructor  creates  a  MultiStreambuf  object  which  contains  no
              associated std::ostream objects.

       o      MultiStreambuf(std::ostream &os, Mode mode = ON):
              This constructor creates a MultiStreambuf object which  is  immediately  associated
              with the std::ostream specified as its first argument.

       o      MultiStreambuf(std::vector<MultiStreambuf::stream> const &osvector):
              This  constructor  creates  a MultiStreambuf object which is immediately associated
              with all  std::ostream  objects  that  are  stored  in  the  MultiStreambuf::stream
              elements of the specified vector.  The copy constructor is available.

MEMBER FUNCTIONS

       All  members  of  std::ostringstream  and  std::exception are available, as MultiStreambuf
       inherits from these classes.

       o      iterator begin():
              This member returns an iterator to the first stream element that  is  stored  in  a
              MultiStreambuf object.

       o      const_iterator begin():
              This  member returns an iterator to the first (unmodifiable) stream element that is
              stored in a MultiStreambuf object.

       o      iterator end():
              This member returns an iterator pointing beyond the last  stream  element  that  is
              stored in a MultiStreambuf object.

       o      const_iterator end():
              This  member  returns  an  iterator  pointing beyond the last (unmodifiable) stream
              element that is stored in a MultiStreambuf object.

       o      void insert(std::ostream &os, Mode mode = ON):
              This member adds the specified std::ostream using the specified Mode to the current
              set   of  stream  objects.  Note  that  if  called  multiple  times  for  identical
              std::ostreams these objects are inserted multiple times as well.

       o      void insert(std::vector<stream> const &os):
              This member adds all stream objects stored in the os vector to the current  set  of
              stream objects.

       o      bool remove(std::ostream &os, Mode mode = ONCE):
              If  os is stored in the MultiStreambuf it is removed, and true is returned. If mode
              ALL is specified all os objects that were stored in the MultiStreambuf  object  are
              removed  (and true is returned). If the os object was not stored false is returned.
              To determine whether os has been stored in the MultiStreambuf object its address is
              compared  to  the  addresses of the std::ostream objects that are stored inside the
              MultiStreambuf object: the object(s) having addresses &os is (are) removed.

       o      void void setOnce():
              This member will reset all the RESET Mode values of the stored  stream  objects  to
              ONCE.

       o      size_t size() const:
              The number of streams currently serviced by the MultiStreambuf object is returned.

PROTECTED MEMBER FUNCTION

       The  member  listed  in  this section implements the tasks of the comparably named virtual
       function in the class’s private interface. This separates the redefinable  interface  from
       the user-interface. The class MultiStreamBuf can, in accordance with Liskov’s Substitution
       Principle, be used as a std:streambuf; but it also offers a facility for classes  deriving
       from MultiStreamBuf. This facility is listed here.

       o      int pSync():
              The  contents  of  the  MultiStreamBuf’s  internal buffer is written to each of the
              std::ostream objects to which the MultiStreamBuf object has access.

EXAMPLE

       #include <iostream>
       #include <fstream>
       #include <bobcat/multistreambuf>

       using namespace std;
       using namespace FBB;

       int main()
       {
           MultiStreambuf  msb(cout);
           ostream         os(&msb);
           ofstream        out("out");

           msb.insert(out, MultiStreambuf::ONCE);

           os << "This is on cout and out" << endl;
           os << "This is on cout only" << endl;

           msb.setOnce();
           os << "This is on cout and out" << endl;
           os << "This is on cout only" << endl;

           return 0;
       }

FILES

       bobcat/multistreambuf - defines the class interface

SEE ALSO

       bobcat(7)

BUGS

       None Reported.

DISTRIBUTION FILES

       o      bobcat_4.01.03-x.dsc: detached signature;

       o      bobcat_4.01.03-x.tar.gz: source archive;

       o      bobcat_4.01.03-x_i386.changes: change log;

       o      libbobcat1_4.01.03-x_*.deb: debian package holding the libraries;

       o      libbobcat1-dev_4.01.03-x_*.deb: debian package holding the libraries,  headers  and
              manual pages;

       o      http://sourceforge.net/projects/bobcat: public archive location;

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).