---
name: "bobcat"
section: "7"
platform: "linux"
package: "libbobcat-dev"
version: "6.07.01-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/bobcat"
---

# bobcat(7)

Overview of classes in the Bobcat library

## NAME

Bobcat - Overview of classes in the Bobcat library

## DESCRIPTION

The classes of the **Bobcat** library may be used after including *bobcat/classname* in sources.

Generally, programs using the **Bobcat** library must be at least linked against the **Bobcat** library. Refer to section **LINKING** for more informatin about linking programs to required libraries.

All classes and other elements are defined in the *FBB* namespace. For some classes *manipulators* are available, which are defined in the *FBB* namespace. An overview of all manipulators defined in the *FBB* namespace is provided by *man -e bobcat manipulators*.

Beyond this section the section **CATEGORIES** groups classes that somehow belong together in various categories.

The following classes and functions are available:

**FBB::Align**: Specifies *Table(Buf)* column and element alignments.\
 (Manpage: *man -e bobcat align*)

**FBB::Arg**: Interfaces the command line arguments, allowing for short- and long options. The class is implemented as a *Singleton*.\
 (Manpage: *man -e bobcat arg*)

**FBB::ArgConfig**: Inherits from *Arg* and *ConfigFile* allowing for options to be specified as command line options and/or configuration file options.  The class is implemented as a *Singleton*.\
 (Manpage: *man -e bobcat argconfig*)

**FBB::A2x**: Ascii-to-x conversions of any type supporting extractions from *i\[string\]stream* objects. (Manpage: *man -e bobcat a2x*)

**FBB::BigInt**: Wrapper class around the openssl BN\_ functions for unlimited integer precision arithmetic. \
 (Manpage: *man -e bobcat bigint*)

**FBB::binary\_search**: A modification of the STL *binary\_search* algorithm returning the location of the searched value in a sorted series of values. \
 (Manpage: *man -e bobcat binarysearch*)

**FBB::BinOps**: A series of function templates implementing binary operators for classes that implement the matching binary assignment operators themselves. \
 (Manpage: *man -e bobcat binops*)

**FBB::BinOpsBase**: A class template implementing binary operators and compound assignment operators for classes that themselves implement swap members and members implementing the basic binary operation on objects of their class types themselves. \
 (Manpage: *man -e bobcat binopsbase*)

**FBB::CerrExtractor**: Executes child processes not expecting input but maybe writing its standard error stream. \
 (Manpage: *man -e bobcat cerrextractor*)

**FBB::CGI**: a class implementing the facilities accessing the data made available through the Common Gateway Interface.\
 (Manpage: *man -e bobcat cgi*)

**FBB::Cidr**: a class testing whether IP4 Internet addresses belong to address ranges defined by Classless Inter-Domain Routing (CIDR) address block specifications.\
 (Manpage: *man -e bobcat cidr*)

**FBB::CinInserter**: Executes child processes expecting input but not producing standard output. \
 (Manpage: *man -e bobcat cininserter*)

**FBB::ClientSocket**: a socket for tcp-communication with a server.\
 (Manpage: *man -e bobcat clientsocket*)

**FBB::CmdFinder**: Command-function associations.\
 (Manpage: *man -e bobcat cmdfinder*)

**FBB::CmdFinderBase**: Base class for *CmdFinder*.\
 (Manpage: *man -e bobcat cmdfinderbase*)

**FBB::Config**: Processing standard configuration files.\
 (Manpage: *man -e bobcat config*)

**FBB::ConfigFile**: Processing standard configuration files (deprecated, use **Config**).\
 (Manpage: *man -e bobcat configfile*)

**FBB::CoutExtractor**: Executes child processes not expecting input but maybe producing standard output. \
 (Manpage: *man -e bobcat coutextractor*)

**FBB::CSVTable**: Construct tables row-by-row.\
 (Manpage: *man -e bobcat csvtable*)

**FBB::CSV4180**: Objects of this class allow for easy handling of comma-separated values (implements RFC 4180).\
 (Manpage: *man -e bobcat csv4180*)

**FBB::DateTime**: Manipulations with date and time values.\
 (Manpage: *man -e bobcat datetime*)

**FBB::DiffieHellman**: Computing shared keys using the Diffie-Hellman algorithm.\
 (Manpage: *man -e bobcat diffiehellman*)

**FBB::DigestBuf**: Computing message digests.\
 (Manpage: *man -e bobcat digestbuf*)

**FBB::ECDH**: Computing shared keys using the elliptic curve based  Diffie-Hellman algorithm.\
 (Manpage: *man -e bobcat ecdh*)

**FBB::Eoi**: *std::streambuf* offering the *eoi* manipulator.\
 (Manpage: *man -e bobcat eoi*)

**FBB::Eoi**: *std::streambuf* offering the *eoi* manipulator.\
 (Manpage: *man -e bobcat eoi*)

**FBB::EoiBuf**: *std::streambuf* offering the *eoi* manipulator and a configurable stream buffer.\
 (Manpage: *man -e bobcat eoibuf*)

**FBB::Exception**: objects of this class accept *ostream* insertions, and are also *std::exception* objects.\
 (Manpage: *man -e bobcat exception*)

**FBB::Exec**: Executes child processes not expecting input and not producing standard output.  \
 (Manpage: *man -e bobcat exec*)

**FBB::Field**: class template retrieving and modifying position based fields in numbers using configurable number systems. \
 (Manpage: *man -e bobcat field*)

**FBB::Fork**: Defines [**fork**(2)](/fork/2.md) as part of a Template Algorithm Design Pattern. \
 (Manpage: *man -e bobcat fork*)

**FBB::GetHostent**: Obtains *hostent* struct from hostname or -address. \
 (Manpage: *man -e bobcat gethostent*)

**FBB::Glob**: Obtain a list of files matching a certain pattern.\
 (Manpage: *man -e bobcat glob*)

**FBB::HmacBuf**: Computing HMAC message digests.\
 (Manpage: *man -e bobcat hmacbuf*)

**FBB::Hostname**: Derived from *Hostent*, allows the initialization from a *std::string*, or from an *FBB::InetAddrress*. \
 (Manpage: *man -e bobcat hostname*)

**FBB::IBase64Stream**: stream implementing base64 encoding and decoding, using a *FBB::Base64Streambuf* stream buffer.\
 (Manpage: *man -e bobcat ibase64stream*)

**FBB::IBase64Buf**: *FBB::IFilterBuf* specialization implementing base64 encoding and decoding.\
 (Manpage: *man -e bobcat ibase64buf*)

**FBB::IFdStream/FBB::IFdStreamS**: stream extracting information from a device whose file descriptor is available. \
 (Manpage: *man -e bobcat ifdstream*)

**FBB::IFdBuf/FBB::IFdBufS**: Input stream buffer initialized by a file descriptor.\
 (Manpage: *man -e bobcat ifdbuf*)

**FBB::IFilterBuf**: *std::streambuf* specialization implementing an *std::istream* filtering design pattern.\
 (Manpage: *man -e bobcat ifilterbuf*)

**FBB::ImmapStream**: stream extracting information from a file using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \
 (Manpage: *man -e bobcat immapstream*)

**FBB::IOmmapStream**: stream extracting information from and/or writing information to a file using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \
 (Manpage: *man -e bobcat iommapstream*)

**FBB::Indent**: Class and manipulators performing text indentation. \
 (Manpage: *man -e bobcat indent*)

**FBB::InetAddress**: Base class (no public constructor) for objects representing an internet address as used with sockets. Contains address and portnumbers. \
 (Manpage: *man -e bobcat inetaddress*)

**FBB::IOStream**: class combining *std::istream* and *std::ostream* features. \
 (Manpage: *man -e bobcat iostream*)

**FBB::IOBuf**: *std::streambuf* specialization allowing combined input and output operations. \
 (Manpage: *man -e bobcat iobuf*)

**FBB::ISharedStream**: *std::istream* operations on shared memory.\
 (Manpage: *man -e bobcat isharedstream*)

**FBB::IQuotedPrintableStream**: stream implementing quoted printable encoding and decoding, using a *FBB::IQuotedPrintableBuf* stream buffer.\
 (Manpage: *man -e bobcat iquotedprintablestream*)

**FBB::IQuotedPrintableBuf**: *FBB::IFilterBuf* specialization implementing quoted printable encoding and decoding.\
 (Manpage: *man -e bobcat iquotedprintablebuf*)

**FBB::IRandStream**: stream to extract random numbers from. \
 (Manpage: *man -e bobcat irandstream*)

**FBB::ISymCryptStream**: stream implementing symmetric encryption and decryption, using a *FBB::ISymCryptStreambuf* stream buffer.\
 (Manpage: *man -e bobcat isymcryptstream*)

**FBB::ISymCryptStreambuf**: *FBB::IFilterBuf* specialization implementing symmetric cryptography.\
 (Manpage: *man -e bobcat isymcryptstreambuf*)

**FBB::Iterator**: a class template creating a bidirectional iterator returning values of a specified type.\
 (Manpage: *man -e bobcat iterator*)

**FBB::Hash...**: Various class templates implementing mapping containers using hashing.\
 (Manpage: *man -e bobcat hash*)

**FBB::Hostent**: Wrapper around the *hostent* struct. \
 (Manpage: *man -e bobcat hostent*)

**FBB::LDC**: Large Digital Converter converts (large) values for various radices. \
 (Manpage: *man -e bobcat ldc*)

**FBB::level**: Manipulator setting the log-level of *FBB::Log* objects.\
 (Manpage: *man -e bobcat level*)

**FBB::LinearMap**: a class template container implementing a map using a linear search algorithm.\
 (Manpage: *man -e bobcat linearmap*)

**FBB::lm**: Manipulator setting the left margin of *FBB::OFoldStream* objects.\
 (Manpage: *man -e bobcat lm*)

**FBB::LocalClientSocket**: a Unix domain socket for tcp-communication with a Unix domain (local) server.\
 (Manpage: *man -e bobcat localclientsocket*)

**FBB::LocalServerSocket**: defines a Unix domain socket to which clients on the local host can connect.\
 (Manpage: *man -e bobcat localserversocket*)

**FBB::LocalSocketBase**: Base class for *LocalClientSocket* and *LocalServerSocket*.\
 (Manpage: *man -e bobcat localsocketbase*)

**FBB::Log**: *std::ostream* handling log messages.\
 (Manpage: *man -e bobcat log*)

**FBB::LogBuf**: *std::streambuf* handling log messages.\
 (Manpage: *man -e bobcat logbuf*)

**FBB::MailHeaders**: extracts mail headers from SMTP-email.\
 (Manpage: *man -e bobcat mailheaders*)

**FBB::Manipulators**: manipulators defined in the namespace **FBB**.\
 (Manpage: *man -e bobcat manipulators*)

**FBB::Mbuf**: *std::streambuf* specialization for inserting messages, mainly used by *FBB::Mstream* objects. \
 (Manpage: *man -e bobcat mbuf*)

**FBB::Milter**: interfaces the sendmail mail filter facilities.\
 (Manpage: *man -e bobcat milter*)

**FBB::mlm**: Manipulator modifying the left margin of *FBB::OFoldStream* objects.\
 (Manpage: *man -e bobcat mlm*)

**FBB::MmapBuf**: *std::streambuf* using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \
 (Manpage: *man -e bobcat mmapbuf*)

**FBB::OmmapStream**: stream writing information to a file using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \
 (Manpage: *man -e bobcat ommapstream*)

**FBB::Mstream**: Inserts messages into streams. \
 (Manpage: *man -e bobcat mstream*)

**FBB::MultiBuf**: *std::streambuf* specializations performing insertions to multiple *std::ostream* objects.\
 (Manpage: *man -e bobcat multibuf*)

**FBB::OFdStream**: stream inserting information into a device whose file descriptor is available. \
 (Manpage: *man -e bobcat ofdstream*)

**FBB::OFdBuf**: Output stream buffer initialized by a file descriptor.\
 (Manpage: *man -e bobcat ofdbuf*)

**FBB::OFilterBuf**: *std::streambuf* specialization implementing an *std::ostream* filtering design pattern.\
 (Manpage: *man -e bobcat ofilterbuf*)

**FBB::OFoldStream**: *std::ostream* using an *OFoldBuf* as its streambuf. \
 (Manpage: *man -e bobcat ofoldstream*)

**FBB::OFoldBuf**: *OFilterBuf* (*std::streambuf*) specialization folding text lines between left and right margins.\
 (Manpage: *man -e bobcat ofoldbuf*)

**FBB::OHexBuf**: *OHexBuf* (*std::streambuf*) specialization inserting characters into a stream by their hex values.\
 (Manpage: *man -e bobcat ohexbuf*)

**FBB::OmmapStream**: stream writing information to a file using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \
 (Manpage: *man -e bobcat ommapstream*)

**FBB::OMutexStream**: Mutex protected *std::ostream*.\
 (Manpage: *man -e bobcat mxstream*)

**FBB::OneKey**: Single keystroke input, not requiring \`Return’.\
 (Manpage: *man -e bobcat onekey*)

**FBB::OSharedStream**: *std::ostream* operations on shared memory.\
 (Manpage: *man -e bobcat osharedstream*)

**FBB::OSymCryptStream**: stream implementing symmetric encryption and decryption, using a *FBB::OSymCryptStreambuf* stream buffer.\
 (Manpage: *man -e bobcat osymcryptstream*)

**FBB::OSymCryptStreambuf**: streambuf derived from *FBB::EoiBuf* implementing symmetric cryptography.\
 (Manpage: *man -e bobcat osymcryptstreambuf*)

**FBB::Pattern**: Regular expression pattern matching.\
 (Manpage: *man -e bobcat pattern*)

**FBB::Pipe**: Defines a system level pipe. \
 (Manpage: *man -e bobcat pipe*)

**FBB::PrimeFactors**: Prime-number factorization of (BigInt) values.\
 (Manpage: *man -e bobcat primefactors*)

**FBB::Process**: Runs child processes, defining pipes between parents and child processes. \
 (Manpage: *man -e bobcat process*)

**FBB::PtrIter**: Input iterator whose dereferenced value returns a pointer rather than a reference to an element. Also offers: a *ptrIter* function template. \
 (Manpage: *man -e bobcat ptriter*)

**FBB::RandBuf**: implements a *streambuf* generating random numbers. \
 (Manpage: *man -e bobcat randbuf*)

**FBB::RandomMt**: class template generating random numbers. \
 (Manpage: *man -e bobcat randommt*)

**FBB::Ranger**: a class template creating ranges that are accepted by range-based for-loops. Also offered: a *ranger* function template. \
 (Manpage: *man -e bobcat ranger*)

**FBB::ReadLineBuf**: implements a *streambuf* using the Gnu *readline* library to allow editing an *std::istream*’s content. \
 (Manpage: *man -e bobcat readlinebuf*)

**FBB::ReadLineHistory**: provides access to the history of lines read from a *ReadLineBuf*. \
 (Manpage: *man -e bobcat readlinehistory*)

**FBB::ReadLineStream**: *std::istream* class using a *ReadLineBuf* for its *std::streambuf*. \
 (Manpage: *man -e bobcat readlinestream*)

**FBB::Redirector**: Defines system level file redirection. \
 (Manpage: *man -e bobcat redirector*)

**FBB::repeat**: Two short extensions of the STL *for\_each* generic algorithm. \
 (Manpage: *man -e bobcat repeat*)

**FBB::Reverse**: a class template creating a reverse iterator returning values of a specified type.\
 (Manpage: *man -e bobcat reverse*)

**FBB::Selector**: Offers timed delays and multiple file I/O. \
 (Manpage: *man -e bobcat selector*)

**FBB::Semaphore**: Dijkstra’s (1962) Semaphore data type.\
 (Manpage: *man -e bobcat semaphore*)

**FBB::ServerSocket**: defines a socket to which clients can connect.\
 (Manpage: *man -e bobcat serversocket*)

**FBB::SharedBlock**: Shared memory data block info.\
 (Manpage: *man -e bobcat sharedblock*)

**FBB::SharedCondition**: Shared memory condition variable.\
 (Manpage: *man -e bobcat sharedcondition*)

**FBB::SharedMemory**: Shared memory structure.\
 (Manpage: *man -e bobcat sharedmemory*)

**FBB::SharedMutex**: Mutex for shared memory.\
 (Manpage: *man -e bobcat sharedmutex*)

**FBB::SharedPos**: Shared Memory offset controller.\
 (Manpage: *man -e bobcat sharedpos*)

**FBB::SharedReadme**: Background info about the  implementation of Bobcat’s Shared Memory.\
 (Manpage: *man -e bobcat sharedreadme*)

**FBB::SharedSegment**: Shared memory data structure.\
 (Manpage: *man -e bobcat sharedsegment*)

**FBB::SharedStream**: I/O operations on shared memory.\
 (Manpage: *man -e bobcat sharedstream*)

**FBB::SharedBuf**: *std::streambuf* interfacing to shared memory.\
 (Manpage: *man -e bobcat sharedbuf*)

**FBB::Signal**: Defines signals, allowing signal handlers to use object’s data members c.q. to call object’s members functions. \
 (Manpage: *man -e bobcat signal*)

**FBB::SocketBase**: Base class for *ClientSocket* and *ServerSocket*.\
 (Manpage: *man -e bobcat socketbase*)

**FBB::Stat**: Determines file characteristics.\
 (Manpage: *man -e bobcat stat*)

**FBB::StdExtractor**: Executes child processes not expecting input but maybe writing their standard output and error streams. \
 (Manpage: *man -e bobcat stdextractor*)

**FBB::String**: Offers extended *std::string* functionality.\
 (Manpage: *man -e bobcat string*)

**FBB::StringLine**: Offers *operator\>\>* extracting lines from *std::istream* objects.\
 (Manpage: *man -e bobcat stringline*)

**FBB::SyslogBuf**: streambuf to Buffer generating [**syslog**(3)](/syslog/3.md) messages. \
 (Manpage: *man -e bobcat syslogbuf*)

**FBB::SyslogStream**: stream to Output stream inserting [**syslog**(3)](/syslog/3.md) messages. \
 (Manpage: *man -e bobcat syslogstream*)

**FBB::fswap**: templates implementing memory bytes based swap functionality \
 (Manpage: *man -e bobcat fswap*)

**FBB::Table**: Display tables row- or column-wise.\
 (Manpage: *man -e bobcat table*)

**FBB::TableBuf**: Display tables row- or column-wise.\
 (Manpage: *man -e bobcat tablebuf*)

**FBB::TableLines**: Support class for the class *Table(Buf)*.\
 (Manpage: *man -e bobcat tablelines*)

**FBB::TableSupport**: Support class for the class *Table(Buf)*.\
 (Manpage: *man -e bobcat tablesupport*)

**FBB::TempStream**: Temporary fstream. \
 (Manpage: *man -e bobcat tempstream*)

**FBB::Tty**: Controls echoing of characters entered at the terminal.\
 (Manpage: *man -e bobcat tty*)

**FBB::TypeTrait**: Traits class template to determine various characteristics of types.\
 (Manpage: *man -e bobcat typetrait*)

**FBB::User**: Determines the current user’s parameters from */etc/passwd*.\
 (Manpage: *man -e bobcat user*)

**FBB::Xpointer**: sets and retrieves the X-windows pointer.\
 (Manpage: *man -e bobcat xpointer*)

**FBB::X2a**: x-to-Ascii conversions of any type supporting insertions into *o\[string\]stream* objects.\
 (Manpage: *man -e bobcat x2a*)

## CATEGORIES

This section groups classes that somehow belong together. The following categories are offered:

- o

  **COMMAND LINE INTERFACE AND CONFIGURATION FILES**

- o

  **CONVERSIONS**

- o

  **DATE AND TIME**

- o

  **ERRORS AND MESSAGE HANDLING**

- o

  **GENERIC ALGORITHM EXTENSIONS**

- o

  **INTERNET / NETWORKING**

- o

  **OPENSSL AND ENCRYPTION**

- o

  **PATTERN MATCHING**

- o

  **PROCESSES, SIGNALS, THREADS**

- o

  **STREAMS AND FILES**

- o

  **SHARED MEMORY**

- o

  **TABLES**

- o

  **VARIOUS TEMPLATES**

- o

  **VARIOUS OTHER CLASSES**

- o

  **COMMAND LINE INTERFACE AND CONFIGURATION FILES**

-

  **FBB::Arg**: Interfaces the command line arguments, allowing for short- and long options. The class is implemented as a *Singleton*.\
   (Manpage: *man -e bobcat arg*)

-

  **FBB::ArgConfig**: Inherits from *Arg* and *ConfigFile* allowing for options to be specified as command line options and/or configuration file options.  The class is implemented as a *Singleton*.\
   (Manpage: *man -e bobcat argconfig*)

-

  **FBB::CmdFinder**: Command-function associations.\
   (Manpage: *man -e bobcat cmdfinder*)

-

  **FBB::CmdFinderBase**: Base class for *CmdFinder*.\
   (Manpage: *man -e bobcat cmdfinderbase*)

-

  **FBB::Config**: Processing standard configuration files.\
   (Manpage: *man -e bobcat configfile*)

-

  **FBB::ConfigFile**: Processing standard configuration files (deprecated, use **Config**).\
   (Manpage: *man -e bobcat configfile*)

-

  - o

  **CONVERSIONS**

-

  **FBB::A2x**: Ascii-to-x conversions of any type supporting extractions from *i\[string\]stream* objects. (Manpage: *man -e bobcat a2x*)

-

  **FBB::BigInt**: Wrapper class around the openssl BN\_ functions for unlimited integer precision arithmetic. \
   (Manpage: *man -e bobcat bigint*)

-

  **FBB::CSV4180**: Objects of this class allow easy handling of comma-separated values (implements RFC 4180).\
   (Manpage: *man -e bobcat csv*)

-

  **FBB::IBase64Stream**: stream implementing base64 encoding and decoding, using a *FBB::Base64Streambuf* stream buffer.\
   (Manpage: *man -e bobcat ibase64stream*)

-

  **FBB::IBase64Buf**: *FBB::IFilterBuf* specialization implementing base64 encoding and decoding.\
   (Manpage: *man -e bobcat ibase64buf*)

-

  **FBB::IQuotedPrintableStream**: stream implementing quoted printable encoding and decoding, using a *FBB::IQuotedPrintableBuf* stream buffer.\
   (Manpage: *man -e bobcat iquotedprintablestream*)

-

  **FBB::IQuotedPrintableBuf**: *FBB::IFilterBuf* specialization implementing quoted printable encoding and decoding.\
   (Manpage: *man -e bobcat iquotedprintablebuf*)

-

  **FBB::LDC**: Large Digital Converter converts (large) values for various radices. \
   (Manpage: *man -e bobcat ldc*)

-

  **FBB::X2a**: x-to-Ascii conversions of any type supporting insertions into *o\[string\]stream* objects.\
   (Manpage: *man -e bobcat x2a*)

-

  - o

  **DATE AND TIME**

-

  **FBB::DateTime**: Manipulations with date and time values.\
   (Manpage: *man -e bobcat datetime*)

-

  - o

  **ERRORS AND MESSAGE HANDLING**

-

  **FBB::Exception**: objects of this class accept *ostream* insertions, and are also *std::exception* objects.\
   (Manpage: *man -e bobcat exception*)

-

  **FBB::level**: Manipulator setting the log-level of *FBB::Log* objects.\
   (Manpage: *man -e bobcat level*)

-

  **FBB::Log**: *std::ostream* handling log messages.\
   (Manpage: *man -e bobcat log*)

-

  **FBB::LogBuf**: *std::streambuf* handling log messages.\
   (Manpage: *man -e bobcat logbuf*)

-

  **FBB::SyslogBuf**: streambuf to Buffer generating [**syslog**(3)](/syslog/3.md) messages. \
   (Manpage: *man -e bobcat syslogbuf*)

-

  **FBB::SyslogStream**: stream to Output stream inserting [**syslog**(3)](/syslog/3.md) messages. \
   (Manpage: *man -e bobcat syslogstream*)

-

  - o

  **GENERIC ALGORITHM EXTENSIONS**

-

  **FBB::binary\_search**: A modification of the STL *binary\_search* algorithm returning the location of the searched value in a sorted series of values. \
   (Manpage: *man -e bobcat binarysearch*)

-

  **FBB::LinearMap**: a class template container implementing a map using a linear search algorithm.\
   (Manpage: *man -e bobcat linearmap*)

-

  **FBB::repeat**: Two short extensions of the STL *for\_each* generic algorithm. \
   (Manpage: *man -e bobcat repeat*)

-

  - o

  **INTERNET / NETWORKING**

-

  **FBB::CGI**: a class implementing the facilities accessing the data made available through the Common Gateway Interface.\
   (Manpage: *man -e bobcat cgi*)

-

  **FBB::Cidr**: a class testing whether IP4 Internet addresses belong to address ranges defined by Classless Inter-Domain Routing (CIDR) address block specifications.\
   (Manpage: *man -e bobcat cidr*)

-

  **FBB::ClientSocket**: a socket for tcp-communication with a server.\
   (Manpage: *man -e bobcat clientsocket*)

-

  **FBB::GetHostent**: Obtains *hostent* struct from hostname or -address. \
   (Manpage: *man -e bobcat gethostent*)

-

  **FBB::Hostname**: Derived from *Hostent*, allows the initialization from a *std::string*, or from an *FBB::InetAddrress*. \
   (Manpage: *man -e bobcat hostname*)

-

  **FBB::InetAddress**: Base class (no public constructor) for objects representing an internet address as used with sockets. Contains address and portnumbers. \
   (Manpage: *man -e bobcat inetaddress*)

-

  **FBB::Hostent**: Wrapper around the *hostent* struct. \
   (Manpage: *man -e bobcat hostent*)

-

  **FBB::LocalClientSocket**: a Unix domain socket for tcp-communication with a Unix domain (local) server.\
   (Manpage: *man -e bobcat localclientsocket*)

-

  **FBB::LocalServerSocket**: defines a Unix domain socket to which clients on the local host can connect.\
   (Manpage: *man -e bobcat localserversocket*)

-

  **FBB::LocalSocketBase**: Base class for *LocalClientSocket* and *LocalServerSocket*.\
   (Manpage: *man -e bobcat localsocketbase*)

-

  **FBB::MailHeaders**: extracts mail headers from SMTP-email.\
   (Manpage: *man -e bobcat mailheaders*)

-

  **FBB::Milter**: interfaces the sendmail mail filter facilities.\
   (Manpage: *man -e bobcat milter*)

-

  **FBB::ServerSocket**: defines a socket to which clients can connect.\
   (Manpage: *man -e bobcat serversocket*)

-

  **FBB::SocketBase**: Base class for *ClientSocket* and *ServerSocket*.\
   (Manpage: *man -e bobcat socketbase*)

-

  - o

  **OPENSSL AND ENCRYPTION**

-

  **FBB::BigInt**: Wrapper class around the openssl BN\_ functions for unlimited integer precision arithmetic. \
   (Manpage: *man -e bobcat bigint*)

-

  **FBB::DiffieHellman**: Computing shared keys using the Diffie-Hellman algorithm.\
   (Manpage: *man -e bobcat diffiehellman*)

-

  **FBB::DigestBuf**: Computing message digests.\
   (Manpage: *man -e bobcat digestbuf*)

-

  **FBB::ECDH**: Computing shared keys using the elliptic curve based  Diffie-Hellman algorithm.\
   (Manpage: *man -e bobcat ecdh*)

-

  **FBB::HmacBuf**: Computing HMAC message digests.\
   (Manpage: *man -e bobcat hmacbuf*)

-

  **FBB::ISymCryptStream**: stream implementing symmetric encryption and decryption, using a *FBB::ISymCryptStreambuf* stream buffer.\
   (Manpage: *man -e bobcat isymcryptstream*)

-

  **FBB::ISymCryptStreambuf**: *FBB::IFilterBuf* specialization implementing symmetric cryptography.\
   (Manpage: *man -e bobcat isymcryptstreambuf*)

-

  **FBB::OSymCryptStream**: stream implementing symmetric encryption and decryption, using a *FBB::OSymCryptStreambuf* stream buffer.\
   (Manpage: *man -e bobcat osymcryptstream*)

-

  **FBB::OSymCryptStreambuf**: streambuf derived from *FBB::EoiBuf* implementing symmetric cryptography.\
   (Manpage: *man -e bobcat osymcryptstreambuf*)

-

  - o

  **PATTERN MATCHING**

-

  **FBB::Glob**: Obtain a list of files matching a certain pattern.\
   (Manpage: *man -e bobcat glob*)

-

  **FBB::Pattern**: Regular expression pattern matching.\
   (Manpage: *man -e bobcat pattern*)

-

  - o

  **PROCESSES, SIGNALS, THREADS**

-

  **FBB::Exec**: Executes child processes not expecting input and not producing standard output.  \
   (Manpage: *man -e bobcat exec*)

-

  **FBB::CerrExtractor**: Executes child processes not expecting input but maybe writing its standard error stream. \
   (Manpage: *man -e bobcat cerrextractor*)

-

  **FBB::CoutExtractor**: Executes child processes not expecting input but maybe producing standard output. \
   (Manpage: *man -e bobcat coutextractor*)

-

  **FBB::Fork**: Defines [**fork**(2)](/fork/2.md) as part of a Template Algorithm Design Pattern. \
   (Manpage: *man -e bobcat fork*)

-

  **FBB::CinInserter**: Executes child processes expecting input but not producing standard output. \
   (Manpage: *man -e bobcat cininserter*)

-

  **FBB::Process**: Runs child processes, defining pipes between parents and child processes. \
   (Manpage: *man -e bobcat process*)

-

  **FBB::Semaphore**: Dijkstra’s (1962) Semaphore data type.\
   (Manpage: *man -e bobcat semaphore*)

-

  **FBB::Signal**: Defines signals, allowing signal handlers to use object’s data members c.q. to call object’s members functions. \
   (Manpage: *man -e bobcat signal*)

-

  **FBB::StdExtractor**: Executes child processes not expecting input but maybe writing their standard output and error streams. \
   (Manpage: *man -e bobcat stdextractor*)

-

  - o

  **STREAMS AND FILES**

-

  **FBB::DigestBuf**: Computing message digests.\
   (Manpage: *man -e bobcat digestbuf*)

-

  **FBB::Eoi**: *std::streambuf* offering the *eoi* manipulator.\
   (Manpage: *man -e bobcat eoi*)

-

  **FBB::EoiBuf**: *std::streambuf* offering the *eoi* manipulator and a configurable stream buffer.\
   (Manpage: *man -e bobcat eoibuf*)

-

  **FBB::IFdStream/FBB::IFdStreamS**: stream extracting information from a device whose file descriptor is available. \
   (Manpage: *man -e bobcat ifdstream*)

-

  **FBB::IFdBuf/FBB::IFdBufS**: Input stream buffer initialized by a file descriptor.\
   (Manpage: *man -e bobcat ifdbuf*)

-

  **FBB::IFilterBuf**: *std::streambuf* specialization implementing an *std::istream* filtering design pattern.\
   (Manpage: *man -e bobcat ifilterbuf*)

-

  **FBB::ImmapStream**: stream extracting information from a file using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \
   (Manpage: *man -e bobcat immapstream*)

-

  **FBB::IOmmapStream**: stream extracting information from and/or writing information to a file using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \
   (Manpage: *man -e bobcat iommapstream*)

-

  **FBB::IOStream**: class combining *std::istream* and *std::ostream* features. \
   (Manpage: *man -e bobcat iostream*)

-

  **FBB::IOBuf**: *std::streambuf* specialization allowing combined input and output operations. \
   (Manpage: *man -e bobcat iobuf*)

-

  **FBB::IRandStream**: stream to extract random numbers from. \
   ((Manpage: *man -e bobcat irandstream*))

-

  **FBB::ISharedStream**: *std::istream* operations on shared memory.\
   (Manpage: *man -e bobcat isharedstream*)

-

  **FBB::lm**: Manipulator setting the left margin of *FBB::OFoldStream* objects.\
   (Manpage: *man -e bobcat lm*)

-

  **FBB::Mbuf**: *std::streambuf* specialization for inserting messages, mainly used by *FBB::Mstream* objects. \
   (Manpage: *man -e bobcat mbuf*)

-

  **FBB::mlm**: Manipulator modifying the left margin of *FBB::OFoldStream* objects.\
   (Manpage: *man -e bobcat mlm*)

-

  **FBB::MmapBuf**: *std::streambuf* using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \
   (Manpage: *man -e bobcat mmapbuf*)

-

  **FBB::Mstream**: Inserts messages into streams. \
   (Manpage: *man -e bobcat mstream*)

-

  **FBB::MultiBuf**: *std::streambuf* specializations performing insertions to multiple *std::ostream* objects.\
   (Manpage: *man -e bobcat multibuf*)

-

  **FBB::OFdStream**: stream inserting information into a device whose file descriptor is available. \
   (Manpage: *man -e bobcat ofdstream*)

-

  **FBB::OFdBuf**: Output stream buffer initialized by a file descriptor.\
   (Manpage: *man -e bobcat ofdbuf*)

-

  **FBB::OFilterBuf**: *std::streambuf* specialization implementing an *std::ostream* filtering design pattern.\
   (Manpage: *man -e bobcat ofilterbuf*)

-

  **FBB::OFoldStream**: *std::ostream* using an *OFoldBuf* as its streambuf. \
   (Manpage: *man -e bobcat ofoldstream*)

-

  **FBB::OFoldBuf**: *OFilterBuf* (*std::streambuf*) specialization folding text lines between left and right margins.\
   (Manpage: *man -e bobcat ofoldbuf*)

-

  **FBB::OHexBuf**: *OHexBuf* (*std::streambuf*) specialization inserting characters into a stream by their hex values.\
   (Manpage: *man -e bobcat ohexbuf*)

-

  **FBB::OmmapStream**: stream writing information to a file using [**mmap**(2)](/mmap/2.md) to load the file’s data into memory. \

-

  **FBB::OMutexStream**: Mutex protected *std::ostream*.\
   (Manpage: *man -e bobcat mxstream*)

-

  **FBB::OSharedStream**: *std::ostream* operations on shared memory.\
   (Manpage: *man -e bobcat osharedstream*)

-

  **FBB::Pipe**: Defines a system level pipe. \
   (Manpage: *man -e bobcat pipe*)

-

  **FBB::RandBuf**: implements a *streambuf* generating random numbers. \
   (Manpage: *man -e bobcat randbuf*)

-

  **FBB::RandomMt**: class template generating random numbers. \
   (Manpage: *man -e bobcat randommt*)

-

  **FBB::ReadLineBuf**: implements a *streambuf* using the Gnu *readline* library to allow editing an *std::istream*’s content. \
   (Manpage: *man -e bobcat readlinebuf*)

-

  **FBB::ReadLineHistory**: provides access to the history of lines read from a *ReadLineBuf*. \
   (Manpage: *man -e bobcat readlinehistory*)

-

  **FBB::ReadLineStream**: *std::istream* class using a *ReadLineBuf* for its *std::streambuf*. \
   (Manpage: *man -e bobcat readlinestream*)

-

  **FBB::Redirector**: Defines system level file redirection. \
   (Manpage: *man -e bobcat redirector*)

-

  **FBB::Selector**: Offers timed delays and multiple file I/O. \
   (Manpage: *man -e bobcat selector*)

-

  **FBB::SharedStream**: I/O operations on shared memory.\
   (Manpage: *man -e bobcat sharedstream*)

-

  **FBB::SharedBuf**: *std::streambuf* interfacing to shared memory.\
   (Manpage: *man -e bobcat sharedbuf*)

-

  **FBB::Stat**: Determines file characteristics.\
   (Manpage: *man -e bobcat stat*)

-

  **FBB::TempStream**: Temporary fstream. \
   (Manpage: *man -e bobcat tempstream*)

-

  - o

  **SHARED MEMORY**

-

  **FBB::ISharedStream**: *std::istream* operations on shared memory.\
   (Manpage: *man -e bobcat isharedstream*)

-

  **FBB::OSharedStream**: *std::ostream* operations on shared memory.\
   (Manpage: *man -e bobcat osharedstream*)

-

  **FBB::SharedBlock**: Shared memory data block info.\
   (Manpage: *man -e bobcat sharedblock*)

-

  **FBB::SharedCondition**: Shared memory condition variable.\
   (Manpage: *man -e bobcat sharedcondition*)

-

  **FBB::SharedMemory**: Shared memory structure.\
   (Manpage: *man -e bobcat sharedmemory*)

-

  **FBB::SharedMutex**: Mutex for shared memory.\
   (Manpage: *man -e bobcat sharedmutex*)

-

  **FBB::SharedPos**: Shared Memory offset controller.\
   (Manpage: *man -e bobcat sharedpos*)

-

  **FBB::SharedReadme**: Background info about the  implementation of Bobcat’s Shared Memory.\
   (Manpage: *man -e bobcat sharedreadme*)

-

  **FBB::SharedSegment**: Shared memory data structure.\
   (Manpage: *man -e bobcat sharedsegment*)

-

  **FBB::SharedStream**: I/O operations on shared memory.\
   (Manpage: *man -e bobcat sharedstream*)

-

  **FBB::SharedBuf**: *std::streambuf* interfacing to shared memory.\
   (Manpage: *man -e bobcat sharedbuf*)

-

  - o

  **TABLES**

-

  **FBB::Align**: Specifies *Table(Buf)* column and element alignments.\
   (Manpage: *man -e bobcat align*)

-

  **FBB::CSVTable**: Construct tables row-by-row.\
   (Manpage: *man -e bobcat csvtable*)

-

  **FBB::Table**: Display tables row- or column-wise.\
   (Manpage: *man -e bobcat table*)

-

  **FBB::TableBuf**: Display tables row- or column-wise.\
   (Manpage: *man -e bobcat tablebuf*)

-

  **FBB::TableLines**: Support class for the class *Table(Buf)*.\
   (Manpage: *man -e bobcat tablelines*)

-

  **FBB::TableSupport**: Support class for the class *Table(Buf)*.\
   (Manpage: *man -e bobcat tablesupport*)

-

  - o

  **VARIOUS TEMPLATES**

-

  **FBB::binary\_search**: A modification of the STL *binary\_search* algorithm returning the location of the searched value in a sorted series of values. \
   (Manpage: *man -e bobcat binarysearch*)

-

  **FBB::BinOps**: A series of function templates implementing binary operators for classes that implement the matching binary assignment operators themselves. \
   (Manpage: *man -e bobcat binops*)

-

  **FBB::BinOpsBase**: A class template implementing binary operators and compound assignment operators for classes that themselves implement swap members and members implementing the basic binary operation on objects of their class types themselves. \
   (Manpage: *man -e bobcat binopsbase*)

-

  **FBB::Field**: class template retrieving and modifying position based fields in numbers using configurable number systems. \
   (Manpage: *man -e bobcat field*)

-

  **FBB::fswap**: templates implementing memory bytes based swap functionality \
   (Manpage: *man -e bobcat fswap*)

-

  **FBB::Hash...**: Various class templates implementing mapping containers using hashing.\
   (Manpage: *man -e bobcat hash*)

-

  **FBB::Iterator**: a class template creating a bidirectional iterator returning values of a specified type.\
   (Manpage: *man -e bobcat iterator*)

-

  **FBB::LinearMap**: a class template container implementing a map using a linear search algorithm.\
   (Manpage: *man -e bobcat linearmap*)

-

  **FBB::PtrIter**: Input iterator whose dereferenced value returns a pointer rather than a reference to an element. Also offers: a *ptrIter* function template. \
   (Manpage: *man -e bobcat ptriter*)

-

  **FBB::Ranger**: a class template creating ranges that are accepted by range-based for-loops. Also offered: a *ranger* function template. \
   (Manpage: *man -e bobcat ranger*)

-

  **FBB::repeat**: Two short extensions of the STL *for\_each* generic algorithm. \
   (Manpage: *man -e bobcat repeat*)

-

  **FBB::Reverse**: a class template creating a reverse iterator returning values of a specified type.\
   (Manpage: *man -e bobcat reverse*)

-

  **FBB::TypeTrait**: Traits class template to determine various characteristics of types.\
   (Manpage: *man -e bobcat typetrait*)

-

  - o

  **VARIOUS OTHER CLASSES**

-

  **FBB::CSV**: Objects of this class allow easy handling of comma-separated values.\
   (Manpage: *man -e bobcat csv*)

-

  **FBB::Indent**: Class and manipulators performing text indentation. \
   (Manpage: *man -e bobcat indent*)

-

  **FBB::Manipulators**: manipulators defined in the namespace **FBB**.\
   (Manpage: *man -e bobcat manipulators*)

-

  **FBB::OneKey**: Single keystroke input, not requiring \`Return’.\
   (Manpage: *man -e bobcat onekey*)

-

  **FBB::PrimeFactors**: Pprime-number factorization of (BigInt) values.\
   (Manpage: *man -e bobcat primefactors*)

-

  **FBB::String**: Offers extended *std::string* functionality.\
   (Manpage: *man -e bobcat string*)

-

  **FBB::StringLine**: Offers *operator\>\>* extracting lines from *std::istream* objects.\
   (Manpage: *man -e bobcat stringline*)

-

  **FBB::Tty**: Controls echoing of characters entered at the terminal.\
   (Manpage: *man -e bobcat tty*)

-

  **FBB::User**: Determines the current user’s parameters from */etc/passwd*.\
   (Manpage: *man -e bobcat user*)

-

  **FBB::Xpointer**: sets and retrieves the X-windows pointer.\
   (Manpage: *man -e bobcat xpointer*)

-

  ## LINKING

To link programs against the shared **Bobcat** library (e.g., *libbobcat6.so*) it is usually sufficient to merely specify *-lbobcat*. E.g.,

```
    g++ --std=c++2a main.cc -lbobcat
```

Note: libraries that are indirectly required are no longer automatically linked to your program. With some classes (e.g., *BigInt*) the *libcrypto* library must also be specified, and programs using such classes must be linked against *bobcat* and *crypto*:

```
    g++ --std=c++2a main.cc -lbobcat -lcrypto
```

Man-pages of classes requiring additional libraries mention these additional libraries in their **SYNOPSIS** sections.

When using *static* linking, the situation is slightly more problematic, and no general rule can be provided here. To create a statically linked program the flag *-static* must be provided, but in addition the *-pthread* flag must often be specified as well. If, when statically linking your program, undefined references to *pthread\_...* identifiers are reported, then that is a sure sign that you need to provide the *-pthread* flag as well.

When using static linking additional libraries, not specified at the man-pages, may also be required. E.g., when using the *Xpointer* class and using static linking, the command becomes:

```
    g++  main.cc -static -pthread -lbobcat -lX11 -lxcb  -lXdmcp -lXau
```

When encountering undefined references when using static linking missing libraries may be suggested by the linker or by its error messages. Alternatively, the missing libraries may be found by searching the Internet.

## FILES

- o

  **/usr/include/bobcat/\<classname\>**:\

- o

  **/usr/lib/libbobcat.\***:\
   (shared, static libraries)

## SEE ALSO

The individual **bobcat/3\<class\>** header files, with man-pages accessible using *man -e bobcat class* (all lowercase names)

## BUGS

No Reported Bugs.

## 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;

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