FBB::IOBuf - streambuf allowing input and output operations
Contents
Bobcat
Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.
Bobcat Project Files
o https://fbb-git.gitlab.io/bobcat/: gitlab project page;
Debian Bobcat project files:
o libbobcat6: debian package containing the shared library, changelog and copyright note;
o libbobcat-dev: debian package containing the static library, headers, manual pages, and developer
info;
Bugs
None reported.
Constructors
o IOBuf():
The default constructor results in a IOBuf object that cannot be immediately used. Its member
open() must be called first.
o IOBuf(std::istream&in,std::ostream&out):
This constructor associates the IOBuf object with a std::istream and a std::ostream. All output
operations will be passed on to the std::ostream, all input operations to the std::istream. The
streams passed to IOBuf() should outlive the IOBuf object.
Copy and move constructors (and assignment operators) are not available.
Copyright
This is free software, distributed under the terms of the GNU General Public License (GPL).
Description
This class implements a specialization of the std::streambuf class, allowing input operations from and
output operations to different files. It is intended to be used in combination with FBB::IOStream, thus
allowing all stream-based input and output operations using the same object without the need to use
seek-operations. Using an FBB::IOStream object it is, e.g., possible to construct two-way communications
using pipes, much like the facilities offered by sockets.
If the streams that will be associated with the IOBuf object support seeking, then the IOBuf will do so
to. Seeking might also be available for a single stream (either the std::istream or the std::ostream).
When the IOBuf object goes out of scope, its associated std::ostream object is flushed.
Example
See the example provided with process(3bobcat).
Files
bobcat/iobuf - defines the class interface
Inherits From
std::streambuf
Member Functions
All members of std::streambuf are available, as FBB::IOBuf inherits from these classes.
o voidopen(std::istream&in,std::ostream&out):
This member (re)associates the IOBuf object with a std::istream and a std::ostream. All output
operations will be passed on to the std::ostream, all input operations to the std::istream. The
streams passed to IOBuf() should outlive the IOBuf object. If this member is called for an IOBuf
object already associated with an std::ostream object, the already associated std::ostream object
is flushed before setting up the new association.
Name
FBB::IOBuf - streambuf allowing input and output operations
Namespace
FBB
All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the
namespace FBB.
See Also
bobcat(7), iostream(3bobcat), process(3bobcat)
Synopsis
#include<bobcat/iobuf>
Linking option: -lbobcatVirtual Protected Member Functions
The following std::streambuf member functions should only be called when the FBB::Streambuf object is
associated with std::istream and std::ostream objects (i.e., they should not be called between the
construction of a default FBB:IOBuf object and a subsequent call of IOBuf::open()):
The members listed in this section implement the tasks of comparably named virtual function in the
class’s private interface. This separates the redefinable interface from the user-interface. The class
IOStreamBuf can, in accordance with Liskov’s Substitution Principle, be used as a std:streambuf; but it
also offers facilities for classes deriving from IOStreamBuf. These facilities are listed here.
o pos_typepSeekoff(off_typeoffset,std::ios::seekdirway,std::ios::openmodemode=std::ios::in|std::ios::out):
With seekable streams, repositions the associated std::istream or std::ostream is repositioned to
offset offset, relative to way.
o pos_typepSeekpos(off_typeoffset,std::ios::openmodemode=std::ios::in|std::ios::out):
With seekable streams, repositions the associated std::istream or std::ostream is repositioned to
offset offset, relative to
o std::streamsizepXsputn(charconst*buffer,std::streamsizen):
This member inserts n characters from buffer into the associated std::ostream stream.
