FBB::OFdBuf(3bobcat)
File Descriptor Output Stream Buffer
(libbobcat-dev_6.06.02)
2005-2024
NAME
FBB::OFdBuf - Output stream buffer initialized by a file descriptor
SYNOPSIS
    #include <bobcat/ofdbuf>
    Linking option: -lbobcat
DESCRIPTION
    FBB::OFdBuf objects may be used as a std::streambuf of
std::ostream objects to allow insertions into 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::OFdStreamBuf
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
    
    -  OFdBuf():
 This constructor initializes the streambuf, without associating it to a
        file descriptor, and without using buffering. The member reset can
        be used to associate the object later on 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 closed.
 
-  OFdBuf(Mode mode):
 This constructor initializes the streambuf, without associating it to a
        file descriptor, and without using buffering. The member reset can
        be used to associate the object later on 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.
 
-  OFdBuf(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 reset is called subsequently, or if the
        object is destroyed the provided file descriptor will be closed.
 
-  OFdBuf(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 will be closed.
 
-  OFdBuf(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 member reset is called, the Mode
        argument determines whether the file descriptor will be closed or will
        remain open.
Copy and move constructors (and assignment operators) are not available.
MEMBER FUNCTIONS
     All members of std::streambuf are available, as FBB::OFdBuf
inherits from this class.
    
    -  void eoi():
 The file descriptor used by the OFdBuf is closed, irrespective of
        the Mode that was specified when the OFdBuf object was
        constructed. Following eoi the OFdBuf object can no longer be
        used until one of its reset members has been called. Instead of
        using this member the eoi manipulator can also be used.
 
-  int fd() const:
 The file descriptor used by the OFdBuf object is returned.
        If the OFdBuf is not associated with a file descriptor -1 is
        returned.
 
-  void reset(int xfd, 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.
 
-  void reset(int xfd, 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 object is destroyed.
 
-  void warn(bool on):
 When on == true a warning is written to the standard error stream
        when its sync member returns -1. If warn is not explicitly
        called on == true is used.
 
MANIPULATOR
    
    -  FBB::eoi:
 The eoi manipulator can be inserted into the ostream instead of
        calling the OFdBuf::end member. It performs the same actions as
        the eoi member.  If inserted into a plain std::ostream nothing
        happens.
EXAMPLE
    
#include <unistd.h>
#include <ostream>
#include <string>
#include "../ofdbuf"
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
{
                           // define a streambuf of 20 or argv[1] characters
    OFdBuf buf{ STDOUT_FILENO, argc == 1 ? 20 : stoul(argv[1]) };
    ostream out{ &buf };
    out << "First line, just to start the insertions\n" <<
            argv[0] << endl <<          // using an explicit flush
            argc << "\n"
            "a long line to end this multiple-insertions statement\n";
}
FILES
    bobcat/ofdbuf - defines the class interface
SEE ALSO
    bobcat(7), ifdbuf(3bobcat), ofdstream(3bobcat),
    std::streambuf
BUGS
    None reported
BOBCAT PROJECT FILES
    -  https://fbb-git.gitlab.io/bobcat/: gitlab project page;
    
-  bobcat_6.06.02-x.dsc: detached signature;
    
-  bobcat_6.06.02-x.tar.gz: source archive;
    
-  bobcat_6.06.02-x_i386.changes: change log;
    
-  libbobcat1_6.06.02-x_*.deb: debian package containing the
            libraries;
    
-  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).