FBB::IFdBuf(3bobcat) | File Descriptor Input Stream Buffer | FBB::IFdBuf(3bobcat) |
NAME
FBB::IFdBuf - Input stream buffer initialized by a file descriptor
SYNOPSIS
#include <bobcat/ifdbuf> (when using
FBB::IFdBuf
#include <bobcat/ifdbufs> (when using FBB::IFdBufS
Linking option: -lbobcat
DESCRIPTION
FBB::IFdBuf objects may be used as a std::streambuf of std::istream objects to allow extractions from a file descriptor.
FBB::IFdBufS objects operate like FBB::IFdBuf objects but use FBB::Selector objects to check whether information on the object’s file descriptor is available before reading information from the 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:
CONSTRUCTORS
- o
- IFdBuf():
This constructor initializes the streambuf, without associating it to a file descriptor, and without using buffering. The member reset 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 reset member is called, the file descriptor is not closed. - o
- IFdBuf(Mode mode):
This constructor initializes the streambuf, without associating it to a file descriptor, and without using buffering. The member reset 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 member reset is called, the Mode argument determines whether the file descriptor will be closed or will remain open. - o
- IFdBuf(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 member reset is called, the file descriptor is not closed. - o
- IFdBuf(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 reset member is called, the Mode argument determines whether the file descriptor will be closed or will remain open. - o
- IFdBufS constructors:
Use IFdBufS constructors corresponding to IFdBuf constructors to construct the corresponding IFdBufS objects.
Copy and move constructors (and assignment operators) are not available.
MEMBER FUNCTIONS
All members of std::streambuf are available, as FBB::IFdBuf(S) inherits from this class.
- o
- void close():
The file descriptor used by the IFdBuf(S) is closed, irrespective of the Mode that was specified when the IFdBuf(S) object was constructed. Following close the IFdBuf(S) object can no longer be used until one of its reset members has been called. - o
- int fd() const:
The file descriptor used by the IFdBuf(S) object is returned. If the OFdBuf is not associated with a file descriptor -1 is returned. - o
- void reset(int fd, size_t n = 1):
The streambuf is (re)initialized, 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. - o
- void reset(int fd, Mode mode, size_t n = 1):
The streambuf is (re)initialized, 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 when the IFdBuf(S) object is destroyed.
EXAMPLE
#include <unistd.h> #include <istream> #include <iostream> #include <bobcat/ifdbuf> using namespace std; using namespace FBB; int main(int argc, char **argv) { // define a streambuf of 20 or argv[1] characters IFdBuf buf{ STDIN_FILENO, argc == 1 ? 20 : stoul(argv[1]) }; istream in{ &buf }; cout << in.rdbuf(); }
FILES
bobcat/ifdbuf - defines the FBB::IFdBuf class
interface
bobcat/ifdbufs - defines the FBB::IFdBufS class interface
SEE ALSO
bobcat(7), ifdstream(3bobcat), ofdbuf(3bobcat), std::streambuf
BUGS
The member xsgetn(char *dest, std::streamsize n) sets istream::good() to false when fewer bytes than n were read using istream::read(). Also see xsgetn’s description.
Note that by default the provided file descriptors remain open. The complementary class ofdbuf(3bobcat) by default closes the file descriptor.
BOBCAT PROJECT FILES
- o
- https://fbb-git.gitlab.io/bobcat/: gitlab project page;
- o
- bobcat_6.06.02-x.dsc: detached signature;
- o
- bobcat_6.06.02-x.tar.gz: source archive;
- o
- bobcat_6.06.02-x_i386.changes: change log;
- o
- libbobcat1_6.06.02-x_*.deb: debian package containing the libraries;
- o
- libbobcat1-dev_6.06.02-x_*.deb: debian package containing the libraries, headers and manual pages;
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).
2005-2024 | libbobcat-dev_6.06.02 |