/usr/share/doc/libbobcat4-dev/man/multistreambuf.3.html is in libbobcat-dev 4.08.02-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 | <!DOCTYPE html><html><head>
<meta charset="UTF-8">
<title>FBB::MultiStreambuf(3bobcat)</title>
<style type="text/css">
figure {text-align: center;}
img {vertical-align: center;}
.XXfc {margin-left:auto;margin-right:auto;}
.XXtc {text-align: center;}
.XXtl {text-align: left;}
.XXtr {text-align: right;}
.XXvt {vertical-align: top;}
.XXvb {vertical-align: bottom;}
</style>
<link rev="made" href="mailto:Frank B. Brokken: f.b.brokken@rug.nl">
</head>
<body text="#27408B" bgcolor="#FFFAF0">
<hr/>
<h1 id="title">FBB::MultiStreambuf(3bobcat)</h1>
<h2 id="author">Writing multiple streams<br/>(libbobcat-dev_4.08.02-x.tar.gz)</h2>
<h2 id="date">2005-2017</h2>
<p>
<h2 >NAME</h2>FBB::MultiStreambuf - Selectively writes multiple streams
<p>
<h2 >SYNOPSIS</h2>
<strong >#include <bobcat/multistreambuf></strong><br/>
Linking option: <em >-lbobcat</em>
<p>
<h2 >DESCRIPTION</h2>
The <strong >FBB::MultiStreambuf</strong> class is a specialization of
<em >std::streambuf</em>. It can be used to write selectively to multiple
<em >std::ostreams</em>. Each <em >std::ostream</em> that is associated with a
<strong >MultiStreambuf</strong> is given a mode-tag indicating whether the stream
should always be used when information is inserted into the
<strong >MultiStreambuf</strong>, just once, or not at all. Each of the stream's
mode-tags may be set to any of the defined tag-values.
<p>
When the address of a <strong >MultiStreambuf</strong> is used to initialize a
<em >std::ostream</em> the constructed <em >std::ostream</em> becomes an
output-multiplexer: by inserting information into the <em >std::ostream</em> object,
all <em >std::ostream</em> objects added to its <strong >MultiStreambuf</strong> buffer which
have an active mode receive that information.
<p>
An <strong >MultiStreambuf</strong> object should be outlived by all active streams
that are associated with it.
<p>
<strong >MultiStreambuf</strong> objects refer to <em >std::ostreams</em> which are passed to it,
and not to their <em >std::streambufs</em>. So it is possible to change these
<em >std::ostream's std::streambufs</em> without reinstalling the <em >std::ostreams</em>
themselves.
<p>
No assumptions should be made about the order in which the <em >std::ostream</em>
objects that are associated with the <strong >MultiStreambuf</strong> objects are
visited when information is inserted.
<p>
<h2 >NAMESPACE</h2>
<strong >FBB</strong><br/>
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace <strong >FBB</strong>.
<p>
<h2 >INHERITS FROM</h2>
<em >std::streambuf</em>
<p>
<h2 >ENUMERATION</h2>
In the <strong >Mode</strong> enumeration the following values are defined:
<ul>
<li> <strong >OFF</strong>:<br/>
A <em >std::ostream</em> having this mode will not be used when information
is inserted into a <strong >MultiStreambuf</strong>
<li> <strong >ON</strong>:<br/>
A <em >std::ostream</em> having this mode will be used when information
is inserted into a <strong >MultiStreambuf</strong>
<li> <strong >ONCE</strong>:<br/>
A <em >std::ostream</em> having this mode will be used once, until the next
flushing operation, when information is inserted into an
<strong >MultiStreambuf</strong>
<li> <strong >RESET</strong>:<br/>
A <em >std::ostream</em> having this mode will not be used when information
is inserted into a <strong >MultiStreambuf</strong>. At a flush operation all <strong >ONCE</strong>
modes will be set to <strong >RESET</strong>
<li> <strong >ALL</strong>:<br/>
This mode is used in combination with the member <em >remove</em> to remove
all <em >std::ostream</em> elements matching a specified <em >std::ostream</em> argument.
</ul>
<p>
<h2 >TYPES</h2>
The following subtypes are defined in the class <strong >FBB:MultiStreambuf</strong>:
<ul>
<li> <strong >iterator</strong>:<br/>
This is a synonym of <em >std::vector<stream>::iterator</em>
<li> <strong >const_iterator</strong>:<br/>
This is a synonym of <em >std::vector<stream>::const_iterator</em>
</ul>
<p>
<h2 >NESTED CLASS</h2>
The class <strong >MultiStreambuf::stream</strong> is defined as a nested class of
<strong >MultiStreambuf</strong>. It offers the following constructor and public
members:
<ul>
<li> <strong >stream(std::ostream &os, Mode mode = ON)</strong>:<br/>
The constructor stores a <em >std::ostream</em> object, and associates a
<strong >Mode</strong> value with it.
<li> <strong >void setMode(Mode mode)</strong>:<br/>
This member is used to redefine the <strong >stream</strong>'s <strong >Mode</strong> value.
<li> <strong >void mode() const</strong>:<br/>
This member returns the <strong >stream</strong>'s <strong >Mode</strong> value.
<li> <strong >operator std::ostream &()</strong>:<br/>
This member returns the <strong >stream</strong>'s <em >std::ostream</em>.
</ul>
<p>
<h2 >CONSTRUCTORS</h2>
<ul>
<li> <strong >MultiStreambuf()</strong>:<br/>
The default constructor creates a <strong >MultiStreambuf</strong> object which
contains no associated <em >std::ostream</em> objects.
<li> <strong >MultiStreambuf(std::ostream &os, Mode mode = ON)</strong>:<br/>
This constructor creates a <strong >MultiStreambuf</strong> object which
is immediately associated with the <em >std::ostream</em> specified as its first
argument.
<li> <strong >MultiStreambuf(std::vector<MultiStreambuf::stream> const &osvector)</strong>:<br/>
This constructor creates a <strong >MultiStreambuf</strong> object which is
immediately associated with all <em >std::ostream</em> objects that are stored in
the <strong >MultiStreambuf::stream</strong> elements of the specified vector.
</ul>
The copy constructor is available.
<p>
<h2 >MEMBER FUNCTIONS</h2>
All members of <em >std::ostringstream</em> and <em >std::exception</em> are
available, as <strong >MultiStreambuf</strong> inherits from these classes.
<ul>
<li> <strong >iterator begin()</strong>:<br/>
This member returns an iterator to the first <strong >stream</strong> element that
is stored in a <strong >MultiStreambuf</strong> object.
<li> <strong >const_iterator begin()</strong>:<br/>
This member returns an iterator to the first (unmodifiable) <strong >stream</strong>
element that is stored in a <strong >MultiStreambuf</strong> object.
<li> <strong >iterator end()</strong>:<br/>
This member returns an iterator pointing beyond the last <strong >stream</strong>
element that is stored in a <strong >MultiStreambuf</strong> object.
<li> <strong >const_iterator end()</strong>:<br/>
This member returns an iterator pointing beyond the last
(unmodifiable) <strong >stream</strong> element that is stored in a <strong >MultiStreambuf</strong>
object.
<li> <strong >void insert(std::ostream &os, Mode mode = ON)</strong>:<br/>
This member adds the specified <em >std::ostream</em> using the specified
<strong >Mode</strong> to the current set of <strong >stream</strong> objects. Note that if called
multiple times for identical <em >std::ostreams</em> these objects are inserted
multiple times as well.
<li> <strong >void insert(std::vector<stream> const &os)</strong>:<br/>
This member adds all <strong >stream</strong> objects stored in the <strong >os</strong> vector to
the current set of <strong >stream</strong> objects.
<li> <strong >bool remove(std::ostream &os, Mode mode = ONCE)</strong>:<br/>
If <em >os</em> is stored in the <strong >MultiStreambuf</strong> it is removed, and
<em >true</em> is returned. If mode <em >ALL</em> is specified all <em >os</em> objects that
were stored in the <strong >MultiStreambuf</strong> object are removed (and <em >true</em> is
returned). If the <em >os</em> object was not stored <em >false</em> is returned. To
determine whether <em >os</em> has been stored in the <strong >MultiStreambuf</strong> object its
address is compared to the addresses of the <em >std::ostream</em> objects that are
stored inside the <strong >MultiStreambuf</strong> object: the object(s) having addresses
<em >&os</em> is (are) removed.
<li> <strong >void void setOnce()</strong>:<br/>
This member will reset all the <em >RESET</em> <strong >Mode</strong> values of the stored
<strong >stream</strong> objects to <em >ONCE</em>.
<li> <strong >size_t size() const</strong>:<br/>
The number of streams currently serviced by the
<strong >MultiStreambuf</strong> object is returned.
</ul>
<p>
<h2 >PROTECTED MEMBER FUNCTION</h2>
<p>
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 <strong >MultiStreamBuf</strong>
can, in accordance with Liskov's Substitution Principle, be used as a
<em >std:streambuf</em>; but it also offers a facility for classes deriving from
<strong >MultiStreamBuf</strong>. This facility is listed here.
<ul>
<li> <strong >int pSync()</strong>:<br/>
The contents of the <strong >MultiStreamBuf</strong>'s internal buffer is written to
each of the <em >std::ostream</em> objects to which the <strong >MultiStreamBuf</strong> object
has access.
</ul>
<p>
<h2 >EXAMPLE</h2>
<pre>
#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;
}
</pre>
<p>
<h2 >FILES</h2>
<em >bobcat/multistreambuf</em> - defines the class interface
<p>
<h2 >SEE ALSO</h2>
<strong >bobcat</strong>(7)
<p>
<h2 >BUGS</h2>
None Reported.
<p>
<h2 >DISTRIBUTION FILES</h2>
<ul>
<li> <em >bobcat_4.08.02-x.dsc</em>: detached signature;
<li> <em >bobcat_4.08.02-x.tar.gz</em>: source archive;
<li> <em >bobcat_4.08.02-x_i386.changes</em>: change log;
<li> <em >libbobcat1_4.08.02-x_*.deb</em>: debian package holding the
libraries;
<li> <em >libbobcat1-dev_4.08.02-x_*.deb</em>: debian package holding the
libraries, headers and manual pages;
<li> <em >http://sourceforge.net/projects/bobcat</em>: public archive location;
</ul>
<p>
<h2 >BOBCAT</h2>
Bobcat is an acronym of `Brokken's Own Base Classes And Templates'.
<p>
<h2 >COPYRIGHT</h2>
This is free software, distributed under the terms of the
GNU General Public License (GPL).
<p>
<h2 >AUTHOR</h2>
Frank B. Brokken (<strong >f.b.brokken@rug.nl</strong>).
<p>
</body>
</html>
|