---
name: "ofdstreambuf"
section: "3bobcat"
platform: "linux"
package: "libbobcat-dev"
version: "4.08.06-1"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/ofdstreambuf"
---

# ofdstreambuf(3bobcat)

Output stream buffer initialized by a file descriptor

## NAME

FBB::OFdStreambuf - Output stream buffer initialized by a file descriptor

## SYNOPSIS

**#include \<bobcat/ofdstreambuf\>**\
 Linking option: *-lbobcat*

## DESCRIPTION

**FBB::OFdStreambuf** 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:

- o

  **CLOSE\_FD**, indicating that the file descriptor used by the object must be closed;

- o

  **KEEP\_FD** (the default) indicating that the file descriptor used by the object must not be closed.

## CONSTRUCTORS

- o

  **OFdStreambuf()**:\
   This constructor initializes the streambuf, without associating it to a file descriptor, and without using buffering. The member **open()** 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 **open** member is called, the file descriptor will be closed.

-

  - o

  **OFdStreambuf(Mode mode)**:\
   This constructor initializes the streambuf, without associating it to a file descriptor, and without using buffering. The member **open()** 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 **open** member is called, the **Mode** argument determines whether the file descriptor will be closed or will remain open.

-

  - o

  **OFdStreambuf(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  **open** is called subsequently, or if the object is destroyed the provided file descriptor will be closed.

-

  - o

  **OFdStreambuf(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 be closed.

-

  - o

  **OFdStreambuf(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 are no copy or move constructors.

## MEMBER FUNCTIONS

All members of **std::streambuf** are available, as **FBB::OFdStreambuf** inherits from this class. Some of the **std::streambuf**’s member are overridden by **FBB::OFdStreambuf**, see below.

- o

  **void close()**:\
   The file descriptor used by the *OFdStreambuf* is closed, irrespective of the *Mode* that was specified when the *OFdStreambuf* object was constructed. Following *close* the *OFdStreambuf* object can no longer be used until one of its *open* members has been called.

- o

  **int fd() const**:\
   The file descriptor used by the *OFdStreambuf* object is returned.  If the *OFdStreambuf* is not associated with a file descriptor -1 is returned.

- o

  **void open(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.

- o

  **void open(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 *IFdStreambuf* object is destroyed. The overloaded assignment operator is not available.

## PROTECTED MEMBER FUNCTION

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 **OFdStreambuf** can, in accordance with Liskov’s Substitution Principle, be used as a *std:streambuf*; but it also offers a facility for classes deriving from **OFdStreambuf**. This facility is listed here.

- o

  **int pSync()**:\
   The contents of the **OFdStreambuf**’s internal buffer are flushed. If writing the contents to the file descriptor fails, a warning message is displayed to the standard error stream.

## EXAMPLE

To do

## FILES

*bobcat/ofdstreambuf* - defines the class interface

## SEE ALSO

[**bobcat**(7)](/bobcat/7.md), [**ifdstreambuf**(3bobcat)](/ifdstreambuf/3bobcat.md), [**ofdstream**(3bobcat)](/ofdstream/3bobcat.md),  **std::streambuf**

## BUGS

None reported

## DISTRIBUTION FILES

- o

  *bobcat\_4.08.06-x.dsc*: detached signature;

- o

  *bobcat\_4.08.06-x.tar.gz*: source archive;

- o

  *bobcat\_4.08.06-x\_i386.changes*: change log;

- o

  *libbobcat1\_4.08.06-x\_\*.deb*: debian package holding the libraries;

- o

  *libbobcat1-dev\_4.08.06-x\_\*.deb*: debian package holding the libraries, headers and manual pages;

- o

  *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).

## AUTHOR

Frank B. Brokken (**f.b.brokken@rug.nl**).
