includefile(include/header)

manpage(Bobcat)(7)(_CurYrs_)(libbobcat-dev__CurVers_)
                  (C++ Classes)

whenhtml(center(htmlcommand(<img src="bobcat.jpg">)))

manpagename(Bobcat)(Overview of classes in the Bobcat library)

manpagedescription()      

The classes of the bf(Bobcat) library may be used after including
tt(bobcat/classname) in sources. 

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

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

Beyond this section the section bf(CATEGORIES) groups classes that
somehow belong together in various categories.

The following classes and functions are available:

    bf(FBB::Align): Specifies tt(Table(Buf)) column and element
    alignments.nl()
    Manpage(align)

    bf(FBB::Arg): Interfaces the command line arguments, allowing for
    short- and long options. The class is implemented as a tt(Singleton).nl()
    Manpage(arg)

    bf(FBB::ArgConfig): Inherits from tt(Arg) and tt(ConfigFile) allowing for
    options to be specified as command line options and/or configuration file
    options.  The class is implemented as a tt(Singleton).nl()
    Manpage(argconfig)

    bf(FBB::A2x): Ascii-to-x conversions of any type supporting extractions
    from tt(i[string]stream) objects. 
    Manpage(a2x)

    bf(FBB::BigInt): Wrapper class around the openssl BN_ functions for
    unlimited integer precision arithmetic. nl()
    Manpage(bigint)

    bf(FBB::binary_search): A modification of the STL tt(binary_search)
    algorithm returning the location of the searched value in a sorted series
    of values. nl()
    Manpage(binarysearch)

    bf(FBB::BinOps): A series of function templates implementing binary
    operators for classes that implement the matching binary assignment
    operators themselves. nl()
    Manpage(binops)

    bf(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. nl()
    Manpage(binopsbase)

    bf(FBB::CGI): a class implementing the facilities accessing the data made 
    available through the Common Gateway Interface.nl()
    Manpage(cgi)

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

    bf(FBB::ClientSocket): a socket for tcp-communication with a server.nl()
    Manpage(clientsocket)

    bf(FBB::CmdFinder): Command-function associations.nl() 
    Manpage(cmdfinder)

    bf(FBB::CmdFinderBase): Base class for tt(CmdFinder).nl() 
    Manpage(cmdfinderbase)

    bf(FBB::Config): Processing standard configuration files.nl() 
    Manpage(config)

    bf(FBB::ConfigFile): Processing standard configuration files (deprecated,
    use bf(Config)).nl() 
    Manpage(configfile)

    bf(FBB::CryptBuf): Base class for DecryptBuf and EncryptBuf.nl()
    Manpage(cryptbuf)

    bf(FBB::CSVTable): Construct tables row-by-row.nl()
    Manpage(csvtable)

    bf(FBB::CSV4180): Objects of this class allow for easy handling of
    comma-separated values (implements RFC 4180).nl()  
    Manpage(csv4180)

    bf(FBB::DateTime): Manipulations with date and time values.nl()
    Manpage(datetime)

    bf(FBB::DecryptBuf): Decrypting information.nl()
    Manpage(decryptbuf)

    bf(FBB::DiffieHellman): Computing shared keys using the Diffie-Hellman
    algorithm.nl() 
    Manpage(diffiehellman)

    bf(FBB::DigestBuf): Computing message digests.nl()
    Manpage(digestbuf)

    bf(FBB::EncryptBuf): Encrypting information.nl()
    Manpage(encryptbuf)

    bf(FBB::Eoi): tt(std::streambuf) offering the tt(eoi) manipulator.nl()
    Manpage(eoi)

    bf(FBB::Eoi): tt(std::streambuf) offering the tt(eoi) manipulator.nl()
    Manpage(eoi)

    bf(FBB::EoiBuf): tt(std::streambuf) offering the tt(eoi) manipulator and a
    configurable stream buffer.nl()
    Manpage(eoibuf)

    bf(FBB::Exception): objects of this class accept tt(ostream) insertions,
    and are also tt(std::exception) objects.nl()
    Manpage(exception)

    bf(FBB::Exec): Executes child processes not expecting input and not
    producing standard output.  nl()
    Manpage(exec)

    bf(FBB::CerrExtractor): Executes child processes not expecting input but
    maybe writing its standard error stream. nl()
    Manpage(cerrextractor)

    bf(FBB::CoutExtractor): Executes child processes not expecting input but
    maybe producing standard output. nl()
    Manpage(coutextractor)

    bf(FBB::Field): class template retrieving and modifying position based
    fields in numbers using configurable number systems. nl()
    Manpage(field)

    bf(FBB::Fork): Defines bf(fork)(2) as part of a Template Algorithm Design
    Pattern. nl()
    Manpage(fork)

    bf(FBB::GetHostent): Obtains tt(hostent) struct from hostname or
    -address. nl()
    Manpage(gethostent)

    bf(FBB::Glob): Obtain a list of files matching a certain pattern.nl()
    Manpage(glob)

    bf(FBB::HmacBuf): Computing HMAC message digests.nl()
    Manpage(hmacbuf)

    bf(FBB::Hostname): Derived from tt(Hostent), allows the initialization
    from a tt(std::string), or from an tt(FBB::InetAddrress). nl()
    Manpage(hostname)

    bf(FBB::IBase64Stream): stream implementing base64 encoding and decoding,
    using a tt(FBB::Base64Streambuf) stream buffer.nl() 
    Manpage(ibase64stream)

    bf(FBB::IBase64Buf): tt(FBB::IFilterBuf) specialization
    implementing base64 encoding and decoding.nl()
    Manpage(ibase64buf)

    bf(FBB::IFdStream): stream extracting information from a device whose
        file descriptor is available. nl()
    Manpage(ifdstream)

    bf(FBB::IFdBuf): Input stream buffer initialized by a file
        descriptor.nl()
    Manpage(ifdbuf)

    bf(FBB::IFilterBuf): tt(std::streambuf) specialization implementing
    an tt(std::istream) filtering design pattern.nl()
    Manpage(ifilterbuf)

    bf(FBB::Indent): Class and manipulators performing text indentation. nl()
    Manpage(indent)

    bf(FBB::InetAddress): Base class (no public constructor) for objects
    representing an internet address as used with sockets. Contains address
    and portnumbers. nl()
    Manpage(inetaddress)

    bf(FBB::CinInserter): Executes child processes expecting input but not
    producing standard output. nl()
    Manpage(cininserter)

    bf(FBB::IOStream): class combining tt(std::istream) and tt(std::ostream)
    features. nl()
    Manpage(iostream)

    bf(FBB::IOBuf): tt(std::streambuf) specialization allowing combined 
    input and output operations. nl()
    Manpage(iobuf)

    bf(FBB::ISharedStream): tt(std::istream) operations on shared memory.nl()
    Manpage(isharedstream)

    bf(FBB::IQuotedPrintableStream): stream implementing quoted printable
    encoding and decoding, using a tt(FBB::IQuotedPrintableBuf) stream
    buffer.nl() 
    Manpage(iquotedprintablestream)

    bf(FBB::IQuotedPrintableBuf): tt(FBB::IFilterBuf)
    specialization implementing quoted printable encoding and decoding.nl()
    Manpage(iquotedprintablebuf)

    bf(FBB::IRandStream): stream to extract random numbers from. nl()
    Manpage(irandstream)

    bf(FBB::ISymCryptStream): stream implementing symmetric encryption and
    decryption, using a tt(FBB::ISymCryptStreambuf) stream buffer.nl()
    Manpage(isymcryptstream)

    bf(FBB::ISymCryptStreambuf): tt(FBB::IFilterBuf) specialization
    implementing symmetric cryptography.nl()
    Manpage(isymcryptstreambuf)

    bf(FBB::Iterator): a class template creating a bidirectional iterator
    returning values of a specified type.nl()
    Manpage(iterator)

    bf(FBB::Hash...): Various class templates implementing mapping containers
    using hashing.nl()
    Manpage(hash)

    bf(FBB::Hostent): Wrapper around the tt(hostent) struct. nl()
    Manpage(hostent)

    bf(FBB::level): Manipulator setting the log-level of tt(FBB::Log)
    objects.nl() 
    Manpage(level)

    bf(FBB::LinearMap): a class template container implementing a map using
    a linear search algorithm.nl()
    Manpage(linearmap)

    bf(FBB::lm): Manipulator setting the left margin of tt(FBB::OFoldStream)
    objects.nl() 
    Manpage(lm)

    bf(FBB::LocalClientSocket): a Unix domain socket for 
    tcp-communication with a Unix domain (local) server.nl()
    Manpage(localclientsocket)

    bf(FBB::LocalServerSocket): defines a Unix domain socket to which
    clients on the local host can connect.nl() 
    Manpage(localserversocket)

    bf(FBB::LocalSocketBase): Base class for tt(LocalClientSocket) and
    tt(LocalServerSocket). 
        nl()
    Manpage(localsocketbase)

    bf(FBB::Log): tt(std::ostream) handling log messages.nl()
    Manpage(log)

    bf(FBB::LogBuf): tt(std::streambuf) handling log messages.nl()
    Manpage(logbuf)

    bf(FBB::MailHeaders): extracts mail headers from SMTP-email.nl()
    Manpage(mailheaders)

    bf(FBB::Manipulators): manipulators defined in the namespace bf(FBB).nl()
    Manpage(manipulators)

    bf(FBB::Mbuf): tt(std::streambuf) specialization for inserting messages,
    mainly used by tt(FBB::Mstream) objects. nl()
    Manpage(mbuf)

    bf(FBB::Milter): interfaces the sendmail mail filter facilities.nl()
    Manpage(milter)

    bf(FBB::mlm): Manipulator modifying the left margin of
    tt(FBB::OFoldStream) objects.nl() 
    Manpage(mlm)

    bf(FBB::Mstream): Inserts messages into streams. nl()
    Manpage(mstream)

    bf(FBB::MultiBuf): tt(std::streambuf) specializations performing
    insertions to multiple tt(std::ostream) objects.nl()
    Manpage(multibuf)

    bf(FBB::OMutexStream): Mutex protected tt(std::ostream).nl()
    Manpage(mxstream)

    bf(FBB::OFdStream): stream inserting information into a device whose
        file descriptor is available. nl()
    Manpage(ofdstream)

    bf(FBB::OFdBuf): Output stream buffer initialized by a file
        descriptor.nl()
    Manpage(ofdbuf)

    bf(FBB::OFilterBuf): tt(std::streambuf) specialization implementing
    an tt(std::ostream) filtering design pattern.nl()
    Manpage(ofilterbuf)

    bf(FBB::OFoldStream): tt(std::ostream) using an tt(OFoldBuf) as its
    streambuf. nl()
    Manpage(ofoldstream)

    bf(FBB::OFoldBuf): tt(OFilterBuf) (tt(std::streambuf))
    specialization folding text lines between left and right margins.nl()
    Manpage(ofoldbuf)

    bf(FBB::OHexBuf): tt(OHexBuf) (tt(std::streambuf))
    specialization inserting characters into a stream by their hex values.nl()
    Manpage(ohexbuf)

    bf(FBB::OneKey): Single keystroke input, not requiring `Return'.nl()
    Manpage(onekey)

    bf(FBB::OSharedStream): tt(std::ostream) operations on shared memory.nl()
    Manpage(osharedstream)

    bf(FBB::Pattern): Regular expression pattern matching.nl()
    Manpage(pattern)

    bf(FBB::Pipe): Defines a system level pipe. nl()
    Manpage(pipe)

    bf(FBB::PrimeFactors): Prime-number factorization of (BigInt) values.nl()
    Manpage(primefactors)

    bf(FBB::Process): Runs child processes, defining pipes between parents and
    child processes. nl()
    Manpage(process)

    bf(FBB::PtrIter): Input iterator whose dereferenced value returns a
    pointer rather than a reference to an element. Also offers: a tt(ptrIter)
    function template. nl()
    Manpage(ptriter)

    bf(FBB::RandBuf): implements a tt(streambuf) generating random 
    numbers. nl()
    Manpage(randbuf)

    bf(FBB::Ranger): a class template creating ranges that are accepted by
    range-based for-loops. Also offered: a tt(ranger) function template. nl()
    Manpage(ranger)

    bf(FBB::ReadLineBuf): implements a tt(streambuf) using the Gnu
    tt(readline) library to allow editing an tt(std::istream)'s content. nl()
    Manpage(readlinebuf)

    bf(FBB::ReadLineHistory): provides access to the history of lines read
    from a tt(ReadLineBuf). nl()
    Manpage(readlinehistory)

    bf(FBB::ReadLineStream): tt(std::istream) class using a tt(ReadLineBuf) 
    for its tt(std::streambuf). nl()
    Manpage(readlinestream)

    bf(FBB::Redirector): Defines system level file redirection. nl()
    Manpage(redirector)

    bf(FBB::repeat): Two short extensions of the STL
    tt(for_each) generic algorithm. nl()
    Manpage(repeat)

    bf(FBB::ReverseIterator): a class template creating a bidirectional
    reverse iterator returning values of a specified type.nl()
    Manpage(reverseiterator)

    bf(FBB::Selector): Offers timed delays and multiple file I/O. nl()
    Manpage(selector)

    bf(FBB::Semaphore): Dijkstra's (1962) Semaphore data type.nl()
    Manpage(semaphore)

    bf(FBB::ServerSocket): defines a socket to which clients can connect.nl()
    Manpage(serversocket)

    bf(FBB::SharedBlock): Shared memory data block info.nl()
    Manpage(sharedblock)

    bf(FBB::SharedCondition): Shared memory condition variable.nl()
    Manpage(sharedcondition)

    bf(FBB::SharedMemory): Shared memory structure.nl()
    Manpage(sharedmemory)

    bf(FBB::SharedMutex): Mutex for shared memory.nl()
    Manpage(sharedmutex)

    bf(FBB::SharedPos): Shared Memory offset controller.nl()
    Manpage(sharedpos)

    bf(FBB::SharedReadme): Background info about the  implementation of 
       Bobcat's Shared Memory.nl()
    Manpage(sharedreadme)

    bf(FBB::SharedSegment): Shared memory data structure.nl()
    Manpage(sharedsegment)

    bf(FBB::SharedStream): I/O operations on shared memory.nl()
    Manpage(sharedstream)

    bf(FBB::SharedBuf): tt(std::streambuf) interfacing to shared
        memory.nl()
    Manpage(sharedbuf)
   
    bf(FBB::Signal): Defines signals, allowing signal handlers to use object's
    data members c.q. to call object's members functions. nl()
    Manpage(signal)

    bf(FBB::SocketBase): Base class for tt(ClientSocket) and tt(ServerSocket).
        nl()
    Manpage(socketbase)

    bf(FBB::Stat): Determines file characteristics.nl()
    Manpage(stat)

    bf(FBB::StdExtractor): Executes child processes not expecting input but
    maybe writing their standard output and error streams. nl()
    Manpage(stdextractor)

    bf(FBB::String): Offers extended tt(std::string) functionality.nl()
    Manpage(string)

    bf(FBB::StringLine): Offers tt(operator>>) extracting lines from
        tt(std::istream) objects.nl()
    Manpage(stringline)

    bf(FBB::SyslogBuf): streambuf to
        Buffer generating bf(syslog)(3) messages. nl()
    Manpage(syslogbuf)

    bf(FBB::SyslogStream): stream to
        Output stream inserting bf(syslog)(3) messages. nl()
    Manpage(syslogstream)

    bf(FBB::fswap): templates implementing memory bytes based swap
        functionality nl()
    Manpage(fswap)

    bf(FBB::Table): Display tables row- or column-wise.nl()
    Manpage(CHAR(t)able)

    bf(FBB::TableBuf): Display tables row- or column-wise.nl()
    Manpage(CHAR(t)ablebuf)

    bf(FBB::TableLines): Support class for the class tt(Table(Buf)).nl()
    Manpage(tablelines)

    bf(FBB::TableSupport): Support class for the class tt(Table(Buf)).nl()
    Manpage(tablesupport)

    bf(FBB::TempStream): Temporary fstream. nl()
    Manpage(tempstream)

    bf(FBB::Tty): Controls echoing of characters entered at the terminal.nl()
    Manpage(tty)

    bf(FBB::TypeTrait): Traits class template to determine various
    characteristics of types.nl()
    Manpage(typetrait)

    bf(FBB::User): Determines the current user's parameters from
    tt(/etc/passwd).nl()
    Manpage(user)

    bf(FBB::Xpointer): sets and retrieves the X-windows pointer.nl()
    Manpage(xpointer)

    bf(FBB::X2a): x-to-Ascii conversions of any type supporting insertions
    into tt(o[string]stream) objects.nl()
    Manpage(x2a)


COMMENT(
    bf(FBB::sequence_includes()): Template function implementing a variant of
    the bf(includes()) generic algorithm, not requiring sorted series.
    (Manpage: bf(man -e bobcat sequenceincludes))

END COMMENT)

manpagesection(CATEGORIES)

    This section groups classes that somehow belong together. The following
categories are offered:
    itemization(
    it() bf(COMMAND LINE INTERFACE AND CONFIGURATION FILES)
    it() bf(CONVERSIONS)
    it() bf(DATE AND TIME)        
    it() bf(ERRORS AND MESSAGE HANDLING)
    it() bf(GENERIC ALGORITHM EXTENSIONS)
    it() bf(INTERNET / NETWORKING)
    it() bf(OPENSSL AND ENCRYPTION)
    it() bf(PATTERN MATCHING)
    it() bf(PROCESSES, SIGNALS, THREADS)
    it() bf(STREAMS AND FILES)
    it() bf(SHARED MEMORY)
    it() bf(TABLES)
    it() bf(VARIOUS TEMPLATES)
    it() bf(VARIOUS OTHER CLASSES)
COMMENT(    it() bf(DEPRECATED CLASSES))
    )    

    itemization(
    it() bf(COMMAND LINE INTERFACE AND CONFIGURATION FILES)

    bf(FBB::Arg): Interfaces the command line arguments, allowing for
    short- and long options. The class is implemented as a tt(Singleton).nl()
    Manpage(arg)

    bf(FBB::ArgConfig): Inherits from tt(Arg) and tt(ConfigFile) allowing for
    options to be specified as command line options and/or configuration file
    options.  The class is implemented as a tt(Singleton).nl()
    Manpage(argconfig)

    bf(FBB::CmdFinder): Command-function associations.nl() 
    Manpage(cmdfinder)

    bf(FBB::CmdFinderBase): Base class for tt(CmdFinder).nl() 
    Manpage(cmdfinderbase)

    bf(FBB::Config): Processing standard configuration files.nl() 
    Manpage(configfile)

    bf(FBB::ConfigFile): Processing standard configuration files (deprecated,
    use bf(Config)).nl() 
    Manpage(configfile)

    it() bf(CONVERSIONS)

    bf(FBB::A2x): Ascii-to-x conversions of any type supporting extractions
    from tt(i[string]stream) objects. 
    Manpage(a2x)

    bf(FBB::BigInt): Wrapper class around the openssl BN_ functions for
    unlimited integer precision arithmetic. nl()
    Manpage(bigint)

    bf(FBB::CSV4180): Objects of this class allow easy handling of
    comma-separated values (implements RFC 4180).nl()  
    Manpage(csv)

COMMENT(
    bf(FBB::CSV): Objects of this class allow easy handling of comma-separated
    values.nl()  
    Manpage(csv)
END)

    bf(FBB::IBase64Stream): stream implementing base64 encoding and decoding,
    using a tt(FBB::Base64Streambuf) stream buffer.nl() 
    Manpage(ibase64stream)

    bf(FBB::IBase64Buf): tt(FBB::IFilterBuf) specialization
    implementing base64 encoding and decoding.nl()
    Manpage(ibase64buf)

    bf(FBB::IQuotedPrintableStream): stream implementing quoted printable
    encoding and decoding, using a tt(FBB::IQuotedPrintableBuf) stream
    buffer.nl() 
    Manpage(iquotedprintablestream)

    bf(FBB::IQuotedPrintableBuf): tt(FBB::IFilterBuf)
    specialization implementing quoted printable encoding and decoding.nl()
    Manpage(iquotedprintablebuf)

    bf(FBB::X2a): x-to-Ascii conversions of any type supporting insertions
    into tt(o[string]stream) objects.nl()
    Manpage(x2a)


    it() bf(DATE AND TIME)        
    
    bf(FBB::DateTime): Manipulations with date and time values.nl()
    Manpage(datetime)

    it() bf(ERRORS AND MESSAGE HANDLING)

    bf(FBB::Exception): objects of this class accept tt(ostream) insertions,
    and are also tt(std::exception) objects.nl()
    Manpage(exception)

    bf(FBB::level): Manipulator setting the log-level of tt(FBB::Log)
    objects.nl() 
    Manpage(level)

    bf(FBB::Log): tt(std::ostream) handling log messages.nl()
    Manpage(log)

    bf(FBB::LogBuf): tt(std::streambuf) handling log messages.nl()
    Manpage(logbuf)

    bf(FBB::SyslogBuf): streambuf to
        Buffer generating bf(syslog)(3) messages. nl()
    Manpage(syslogbuf)

    bf(FBB::SyslogStream): stream to
        Output stream inserting bf(syslog)(3) messages. nl()
    Manpage(syslogstream)


    it() bf(GENERIC ALGORITHM EXTENSIONS)

    bf(FBB::binary_search): A modification of the STL tt(binary_search)
    algorithm returning the location of the searched value in a sorted series
    of values. nl()
    Manpage(binarysearch)

    bf(FBB::LinearMap): a class template container implementing a map using
    a linear search algorithm.nl()
    Manpage(linearmap)

    bf(FBB::repeat): Two short extensions of the STL 
    tt(for_each) generic algorithm. nl()
    Manpage(repeat)


    it() bf(INTERNET / NETWORKING)

    bf(FBB::CGI): a class implementing the facilities accessing the data made 
    available through the Common Gateway Interface.nl()
    Manpage(cgi)

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

    bf(FBB::ClientSocket): a socket for tcp-communication with a server.nl()
    Manpage(clientsocket)

    bf(FBB::GetHostent): Obtains tt(hostent) struct from hostname or
    -address. nl()
    Manpage(gethostent)

    bf(FBB::Hostname): Derived from tt(Hostent), allows the initialization
    from a tt(std::string), or from an tt(FBB::InetAddrress). nl()
    Manpage(hostname)

    bf(FBB::InetAddress): Base class (no public constructor) for objects
    representing an internet address as used with sockets. Contains address
    and portnumbers. nl()
    Manpage(inetaddress)

    bf(FBB::Hostent): Wrapper around the tt(hostent) struct. nl()
    Manpage(hostent)

    bf(FBB::LocalClientSocket): a Unix domain socket for 
    tcp-communication with a Unix domain (local) server.nl()
    Manpage(localclientsocket)

    bf(FBB::LocalServerSocket): defines a Unix domain socket to which
    clients on the local host can connect.nl() 
    Manpage(localserversocket)

    bf(FBB::LocalSocketBase): Base class for tt(LocalClientSocket) and
    tt(LocalServerSocket). 
        nl()
    Manpage(localsocketbase)

    bf(FBB::MailHeaders): extracts mail headers from SMTP-email.nl()
    Manpage(mailheaders)

    bf(FBB::Milter): interfaces the sendmail mail filter facilities.nl()
    Manpage(milter)

    bf(FBB::ServerSocket): defines a socket to which clients can connect.nl()
    Manpage(serversocket)

    bf(FBB::SocketBase): Base class for tt(ClientSocket) and tt(ServerSocket).
        nl()
    Manpage(socketbase)


    it() bf(OPENSSL AND ENCRYPTION)

    bf(FBB::BigInt): Wrapper class around the openssl BN_ functions for
    unlimited integer precision arithmetic. nl()
    Manpage(bigint)

    bf(FBB::CryptBuf): Base class for DecryptBuf and EncryptBuf.nl()
    Manpage(cryptbuf)

    bf(FBB::DecryptBuf): Decrypting information.nl()
    Manpage(decryptbuf)

    bf(FBB::DiffieHellman): Computing shared keys using the Diffie-Hellman
    algorithm.nl() 
    Manpage(diffiehellman)

    bf(FBB::DigestBuf): Computing message digests.nl()
    Manpage(digestbuf)

    bf(FBB::EncryptBuf): Encrypting information.nl()
    Manpage(encryptbuf)

    bf(FBB::HmacBuf): Computing HMAC message digests.nl()
    Manpage(hmacbuf)

    bf(FBB::ISymCryptStream): stream implementing symmetric encryption and
    decryption, using a tt(FBB::ISymCryptStreambuf) stream buffer.nl()
    Manpage(isymcryptstream)

    bf(FBB::ISymCryptStreambuf): tt(FBB::IFilterBuf) specialization
    implementing symmetric cryptography.nl()
    Manpage(isymcryptstreambuf)


    it() bf(PATTERN MATCHING)

    bf(FBB::Glob): Obtain a list of files matching a certain pattern.nl()
    Manpage(glob)

    bf(FBB::Pattern): Regular expression pattern matching.nl()
    Manpage(pattern)


    it() bf(PROCESSES, SIGNALS, THREADS)

    bf(FBB::Exec): Executes child processes not expecting input and not
    producing standard output.  nl()
    Manpage(exec)

    bf(FBB::CerrExtractor): Executes child processes not expecting input but
    maybe writing its standard error stream. nl()
    Manpage(cerrextractor)

    bf(FBB::CoutExtractor): Executes child processes not expecting input but
    maybe producing standard output. nl()
    Manpage(coutextractor)

    bf(FBB::Fork): Defines bf(fork)(2) as part of a Template Algorithm Design
    Pattern. nl()
    Manpage(fork)

    bf(FBB::CinInserter): Executes child processes expecting input but not
    producing standard output. nl()
    Manpage(cininserter)

    bf(FBB::Process): Runs child processes, defining pipes between parents and
    child processes. nl()
    Manpage(process)

    bf(FBB::Semaphore): Dijkstra's (1962) Semaphore data type.nl()
    Manpage(semaphore)

    bf(FBB::Signal): Defines signals, allowing signal handlers to use object's
    data members c.q. to call object's members functions. nl()
    Manpage(signal)

    bf(FBB::StdExtractor): Executes child processes not expecting input but
    maybe writing their standard output and error streams. nl()
    Manpage(stdextractor)

    it() bf(STREAMS AND FILES)

    bf(FBB::DigestBuf): Computing message digests.nl()
    Manpage(digestbuf)

    bf(FBB::Eoi): tt(std::streambuf) offering the tt(eoi) manipulator.nl()
    Manpage(eoi)

    bf(FBB::EoiBuf): tt(std::streambuf) offering the tt(eoi) manipulator and a
    configurable stream buffer.nl()
    Manpage(eoibuf)

    bf(FBB::IFdStream): stream extracting information from a device whose
        file descriptor is available. nl()
    Manpage(ifdstream)

    bf(FBB::IFdBuf): Input stream buffer initialized by a file
        descriptor.nl()
    Manpage(ifdbuf)

    bf(FBB::IFilterBuf): tt(std::streambuf) specialization implementing
    an tt(std::istream) filtering design pattern.nl()
    Manpage(ifilterbuf)

    bf(FBB::IOStream): class combining tt(std::istream) and tt(std::ostream)
    features. nl()
    Manpage(iostream)

    bf(FBB::IOBuf): tt(std::streambuf) specialization allowing combined 
    input and output operations. nl()
    Manpage(iobuf)

    bf(FBB::IRandStream): stream to extract random numbers from. nl()
    (Manpage(irandstream))

    bf(FBB::ISharedStream): tt(std::istream) operations on shared memory.nl()
    Manpage(isharedstream)

    bf(FBB::lm): Manipulator setting the left margin of tt(FBB::OFoldStream)
    objects.nl() 
    Manpage(lm)

    bf(FBB::Mbuf): tt(std::streambuf) specialization for inserting messages,
    mainly used by tt(FBB::Mstream) objects. nl()
    Manpage(mbuf)

    bf(FBB::mlm): Manipulator modifying the left margin of
    tt(FBB::OFoldStream) objects.nl() 
    Manpage(mlm)

    bf(FBB::Mstream): Inserts messages into streams. nl()
    Manpage(mstream)

    bf(FBB::MultiBuf): tt(std::streambuf) specializations performing
    insertions to multiple tt(std::ostream) objects.nl()
    Manpage(multibuf)

    bf(FBB::OMutexStream): Mutex protected tt(std::ostream).nl()
    Manpage(mxstream)

    bf(FBB::OFdStream): stream inserting information into a device whose
        file descriptor is available. nl()
    Manpage(ofdstream)

    bf(FBB::OFdBuf): Output stream buffer initialized by a file
        descriptor.nl()
    Manpage(ofdbuf)

    bf(FBB::OFilterBuf): tt(std::streambuf) specialization implementing
    an tt(std::ostream) filtering design pattern.nl()
    Manpage(ofilterbuf)

    bf(FBB::OFoldStream): tt(std::ostream) using an tt(OFoldBuf) as its
    streambuf. nl()
    Manpage(ofoldstream)

    bf(FBB::OFoldBuf): tt(OFilterBuf) (tt(std::streambuf))
    specialization folding text lines between left and right margins.nl()
    Manpage(ofoldbuf)

    bf(FBB::OHexBuf): tt(OHexBuf) (tt(std::streambuf))
    specialization inserting characters into a stream by their hex values.nl()
    Manpage(ohexbuf)

    bf(FBB::OSharedStream): tt(std::ostream) operations on shared memory.nl()
    Manpage(osharedstream)

    bf(FBB::Pipe): Defines a system level pipe. nl()
    Manpage(pipe)

    bf(FBB::RandBuf): implements a tt(streambuf) generating random 
    numbers. nl()
    Manpage(randbuf)

    bf(FBB::ReadLineBuf): implements a tt(streambuf) using the Gnu
    tt(readline) library to allow editing an tt(std::istream)'s content. nl()
    Manpage(readlinebuf)

    bf(FBB::ReadLineHistory): provides access to the history of lines read
    from a tt(ReadLineBuf). nl()
    Manpage(readlinehistory)

    bf(FBB::ReadLineStream): tt(std::istream) class using a tt(ReadLineBuf) 
    for its tt(std::streambuf). nl()
    Manpage(readlinestream)

    bf(FBB::Redirector): Defines system level file redirection. nl()
    Manpage(redirector)

    bf(FBB::Selector): Offers timed delays and multiple file I/O. nl()
    Manpage(selector)

    bf(FBB::SharedStream): I/O operations on shared memory.nl()
    Manpage(sharedstream)

    bf(FBB::SharedBuf): tt(std::streambuf) interfacing to shared
        memory.nl()
    Manpage(sharedbuf)

    bf(FBB::Stat): Determines file characteristics.nl()
    Manpage(stat)

    bf(FBB::TempStream): Temporary fstream. nl()
    Manpage(tempstream)

    it() bf(SHARED MEMORY)

    bf(FBB::ISharedStream): tt(std::istream) operations on shared memory.nl()
    Manpage(isharedstream)

    bf(FBB::OSharedStream): tt(std::ostream) operations on shared memory.nl()
    Manpage(osharedstream)

    bf(FBB::SharedBlock): Shared memory data block info.nl()
    Manpage(sharedblock)

    bf(FBB::SharedCondition): Shared memory condition variable.nl()
    Manpage(sharedcondition)

    bf(FBB::SharedMemory): Shared memory structure.nl()
    Manpage(sharedmemory)

    bf(FBB::SharedMutex): Mutex for shared memory.nl()
    Manpage(sharedmutex)

    bf(FBB::SharedPos): Shared Memory offset controller.nl()
    Manpage(sharedpos)

    bf(FBB::SharedReadme): Background info about the  implementation of 
       Bobcat's Shared Memory.nl()
    Manpage(sharedreadme)

    bf(FBB::SharedSegment): Shared memory data structure.nl()
    Manpage(sharedsegment)

    bf(FBB::SharedStream): I/O operations on shared memory.nl()
    Manpage(sharedstream)

    bf(FBB::SharedBuf): tt(std::streambuf) interfacing to shared
        memory.nl()
    Manpage(sharedbuf)

    it() bf(TABLES)

    bf(FBB::Align): Specifies tt(Table(Buf)) column and element
    alignments.nl()
    Manpage(align)

    bf(FBB::CSVTable): Construct tables row-by-row.nl()
    Manpage(csvtable)

    bf(FBB::Table): Display tables row- or column-wise.nl()
    Manpage(CHAR(t)able)

    bf(FBB::TableBuf): Display tables row- or column-wise.nl()
    Manpage(CHAR(t)ablebuf)

    bf(FBB::TableLines): Support class for the class tt(Table(Buf)).nl()
    Manpage(tablelines)

    bf(FBB::TableSupport): Support class for the class tt(Table(Buf)).nl()
    Manpage(tablesupport)

    it() bf(VARIOUS TEMPLATES)

    bf(FBB::binary_search): A modification of the STL tt(binary_search)
    algorithm returning the location of the searched value in a sorted series
    of values. nl()
    Manpage(binarysearch)

    bf(FBB::BinOps): A series of function templates implementing binary
    operators for classes that implement the matching binary assignment
    operators themselves. nl()
    Manpage(binops)

    bf(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. nl()
    Manpage(binopsbase)

    bf(FBB::Field): class template retrieving and modifying position based
    fields in numbers using configurable number systems. nl()
    Manpage(field)

    bf(FBB::fswap): templates implementing memory bytes based swap
        functionality nl()
    Manpage(fswap)

    bf(FBB::Hash...): Various class templates implementing mapping containers
    using hashing.nl()
    Manpage(hash)

    bf(FBB::Iterator): a class template creating a bidirectional iterator
    returning values of a specified type.nl()
    Manpage(iterator)

    bf(FBB::LinearMap): a class template container implementing a map using
    a linear search algorithm.nl()
    Manpage(linearmap)

    bf(FBB::PtrIter): Input iterator whose dereferenced value returns a
    pointer rather than a reference to an element. Also offers: a tt(ptrIter)
    function template. nl()
    Manpage(ptriter)

    bf(FBB::Ranger): a class template creating ranges that are accepted by
    range-based for-loops. Also offered: a tt(ranger) function template. nl()
   Manpage(ranger)

    bf(FBB::repeat): Two short extensions of the STL 
    tt(for_each) generic algorithm. nl()
    Manpage(repeat)

    bf(FBB::ReverseIterator): a class template creating a bidirectional
    reverse iterator returning values of a specified type.nl()
    Manpage(reverseiterator)

    bf(FBB::TypeTrait): Traits class template to determine various
    characteristics of types.nl()
    Manpage(typetrait)

    it() bf(VARIOUS OTHER CLASSES)

    bf(FBB::CSV): Objects of this class allow easy handling of comma-separated
    values.nl()  
    Manpage(csv)

    bf(FBB::Indent): Class and manipulators performing text indentation. nl()
    Manpage(indent)

    bf(FBB::Manipulators): manipulators defined in the namespace bf(FBB).nl()
    Manpage(manipulators)

    bf(FBB::OneKey): Single keystroke input, not requiring `Return'.nl()
    Manpage(onekey)

    bf(FBB::PrimeFactors): Pprime-number factorization of (BigInt) values.nl()
    Manpage(primefactors)

    bf(FBB::String): Offers extended tt(std::string) functionality.nl()
    Manpage(string)

    bf(FBB::StringLine): Offers tt(operator>>) extracting lines from
        tt(std::istream) objects.nl()
    Manpage(stringline)

    bf(FBB::Tty): Controls echoing of characters entered at the terminal.nl()
    Manpage(tty)

    bf(FBB::User): Determines the current user's parameters from
    tt(/etc/passwd).nl()
    Manpage(user)

    bf(FBB::Xpointer): sets and retrieves the X-windows pointer.nl()
    Manpage(xpointer)

COMMENT(
    it() bf(DEPRECATED CLASSES)
        Deprecated classes should no longer be used. Their functionality is
        better provided by other classes. The deprecated classes are no
        longer maintained.nl()

        bf(FBB::CSV): Comma separated values are now handled by the class
        bf(CSV4180), implementing RFC 4180.nl()
END)
     )

manpagesection(LINKING)

    To link programs against the shared bf(Bobcat) library (e.g.,
tt(libbobcat5.so)) it is usually sufficient to merely specify
tt(-lbobcat). E.g.,
        verb(
    g++ --std=c++2a main.cc -lbobcat
        )

    Due to a change in library handling by the linker
(cf. lurl(http://fedoraproject.org/wiki/UnderstandingDSOLinkChange) and
lurl(https://wiki.debian.org/ToolChain/DSOLinking)), implemented in 2013,
libraries that are indirectly required are no longer automatically linked to
your program. With some classes (e.g., tt(BigInt)) the tt(libcrypto) library
must also be specified, and programs using such classes must be linked against
tt(bobcat) and tt(crypto):
        verb(
    g++ --std=c++2a main.cc -lbobcat -lcrypto
        )
    Man-pages of classes requiring additional libraries mention these
additional libraries in their bf(SYNOPSIS) sections. 

    When using em(static) linking, the situation is slightly more problematic,
and no general rule can be provided here. To create a statically linked
program the flag tt(-static) must be provided, but in addition the
tt(-pthread) flag must often be specified as well. If, when statically linking
your program, undefined references to tt(pthread_...) identifiers are
reported, then that is a sure sign that you need to provide the tt(-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 tt(Xpointer) class and
using static linking, the command becomes:
        verb(
    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. 


manpagefiles()
    itemization(
    itb(/usr/include/bobcat/<classname>)
    itb(/usr/lib/libbobcat.*) (shared, static libraries)
    )

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

manpagebugs()
    No Reported Bugs.

includefile(include/trailer)
