FBB::IFdStreambuf objects may be used as a std::streambuf of
std::istream objects to allow extractions from a file descriptor.
File descriptors are not defined within the context of C++,
but they can be used on operating systems that support the concept. Realize
that using file descriptors introduces operating system dependencies.
NAMESPACE
FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace FBB.
INHERITS FROM
std::streambuf
ENUMERATION
The public enumeration Mode defined in the class FBB::IFdStreamBuf
has the following values:
CLOSE_FD, indicating that the file descriptor used by the object
must be closed;
KEEP_FD (the default) indicating that the file descriptor used by
the object must not be closed.
CONSTRUCTORS
Ifdstreambuf():
This constructor initializes the streambuf, without associating it to
a file descriptor, and without using buffering. The member open() can be
used subsequently to associate the object with a file descriptor and
optionally a buffer size. When the object is destroyed or if the mode-less
overloaded version of the open member is called, the file descriptor will
not be closed.
Ifdstreambuf(Mode mode):
This constructor initializes the streambuf, without associating it to
a file descriptor, and without using buffering. The member open() can be
used subsequently to associate the object with a file descriptor and
optionally a buffer size. When the object is destroyed or if the mode-less
overloaded version of the open member is called, the Mode argument
determines whether the file descriptor will be closed or will remain open.
IFdStreambuf(int fd, size_t n = 1):
This constructor initializes the streambuf, associating it to file
descriptor fd, and an optional unget buffer size (by default having size
1). When the object is destroyed or if the mode-less overloaded version of
the open member is called, the file descriptor will not be closed.
IFdStreambuf(int fd, Mode mode, size_t n = 1):
This constructor initializes the streambuf, associating it to file
descriptor fd, and an optional unget buffer size (by default having size
1). When the object is destroyed or if the mode-less
overloaded version of the open member is called, the Mode argument
determines whether the file descriptor will be closed or will remain open.
There is no copy constructor.
MEMBER FUNCTIONS
All members of std::streambuf are
available, as FBB::IFdStreambuf inherits from this class. Some of the
std::streambuf's member are overridden by FBB::IFdStreambuf, see
below.
void open(int xfd, size_t n = 1):
This member (re)initializes the streambuf, using file
descriptor fd, and an optional unget buffer size (by default having size
1). When called repeatedly, the Mode specification used whem the object
was constructed determines whether the file descriptor will be closed or will
remain open.
void open(int xfd, Mode mode, size_t n = 1):
This member (re)initializes the streambuf, using file descriptor
fd, a file descriptor closing parameter and an optional unget buffer size
(by default having size 1). Depending on the Mode argument the object's
currently used file descriptor will be closed or will remain open.
int underflow():
This member overrides the std::streambuf member. It is called by
std::istream objects using IFdStreambuf. It produces the next
available character. It returns EOF if no (more) characters are available.
std::streamsize xsgetn(char *dest, std::streamsize n):
This member overrides the std::streambuf member. It returns
the n next available characters, storing them into dest. It returns
the number of characters that were actually read.
Note that there is no overloaded assignment operator available for this
class.
Note that by default the provided file descriptors will remain open. The
complementary class ofdstreambuf(3bobcat) closes the file descriptor
by default. This inconsistency was deliberately accepted to keep the classes
interfaces backward compatible.
DISTRIBUTION FILES
bobcat_2.02.03-x.dsc: detached signature;
bobcat_2.02.03-x.tar.gz: source archive;
bobcat_2.02.03-x_i386.changes: change log;
libbobcat1_2.02.03-x_*.deb: debian package holding the
libraries;
libbobcat1-dev_2.02.03-x_*.deb: debian package holding the
libraries, headers and manual pages;
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).