FBB::MultiBuf(3bobcat)

Writing multiple streams
(libbobcat-dev_6.02.02)

2005-2022

NAME

FBB::MultiBuf - Selectively writes multiple streams

SYNOPSIS

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

DESCRIPTION

The FBB::MultiBuf 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 MultiBuf is given a mode-tag indicating whether the stream should always be used when information is inserted into the MultiBuf, 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 MultiBuf 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 MultiBuf buffer which have an active mode receive that information.

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

MultiBuf 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 MultiBuf 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:

TYPES

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

NESTED CLASS

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

CONSTRUCTORS

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

MEMBER FUNCTIONS

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

EXAMPLE


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

using namespace std;
using namespace FBB;

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

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

    os << "This is on cout and out\n"
          "This is on cout only\n";

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

FILES

bobcat/multibuf - defines the class interface

SEE ALSO

bobcat(7)

BUGS

None Reported.

BOBCAT PROJECT FILES

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