FBB::MultiStreambuf(3bobcat)
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 selectvely to multiple std::ostreams. Each
std::ostream that is associated with an FBB::MultiStreambuf is given a
mode-tag indicating whether the stream should always be used when
information is inserted into the FBB::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 FBB::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 FBB::MultiStreambuf buffer which have
an active mode will receive that information.
An FBB::MultiStreambuf object should be outlived by all active streams
that are associated with it.
No assumptions should be made about the order in which the std::ostream
objects that are associated with the FBB::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 an FBB::MultiStreambuf
- o ON:
- A std::ostream having this mode will be used when information is inserted into an FBB::MultiStreambuf
- o ONCE:
- A std::ostream having this mode will be used once, until the next flushing operation, when information is inserted into an FBB::MultiStreambuf
- o RESET:
- A std::ostream having this mode will not be used when information is inserted into an FBB::MultiStreambuf. At a flush operation all ONCE modes will be set to RESET
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 FBB::MultiStreambuf::stream is defined as a nested class of
FBB::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 FBB::MultiStreambuf object which contains no associated std::ostream objects.
- o MultiStreambuf(std::ostream &os, Mode mode = ON):
- This constructor creates a FBB::MultiStreambuf object which is immediately associated with the std::ostream specified as its first argument.
- o MultiStreambuf(std::vector<MultiStreambuf::stream> const &osvec
- tor):
This constructor creates a FBB::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 FBB::MultiStreambuf inherits from these classes.
- o iterator begin():
- This member returns an iterator to the first stream element that is stored in a FBB::MultiStreambuf object.
- o const_iterator begin():
- This member returns an iterator to the first (unmodifiable) stream element that is stored in a FBB::MultiStreambuf object.
- o iterator end():
- This member returns an iterator pointing beyond the last stream element that is stored in a FBB::MultiStreambuf object.
- o iterator end():
- This member returns an iterator pointing beyond the last (unmodifiable) stream element that is stored in a FBB::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.
- 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 void void setOnce():
- This member will reset all the RESET Mode values of the stored stream objects to ONCE.
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
BUGS
None Reported.
DISTRIBUTION FILES
o bobcat_2.08.01-x.dsc: detached signature;
o bobcat_2.08.01-x.tar.gz: source archive;
o bobcat_2.08.01-x_i386.changes: change log;
- o libbobcat1_2.08.01-x_*.deb: debian package holding the
- libraries;
- o libbobcat1-dev_2.08.01-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).