FBB::EoiBuf(3bobcat)

End-Of-Information Base class
(libbobcat-dev_5.11.01)

2005-2022

NAME

FBB::EoiBuf - std::streambuf class offering an eoi manipulator

SYNOPSIS

#include <bobcat/eoibuf>
Linking option: -lbobcat

DESCRIPTION

The class EoiBuf inherits from Eoi and may therefore be used as a base class of classes specializing std::streambuf. It also provides a configurable character buffer for storing characters received from their devices. Often, when deriving classes from std::streambuf the derived classes must implement storage to and retrieval from a character buffer. By deriving from EoiBuf buffer-handling is automatically provided.

NAMESPACE

FBB
All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace FBB.

INHERITS FROM

Eoi (and thus from: std::streambuf)

PROTECTED CONSTRUCTOR

Analogously to std::streambuf only protected constructors are available.

Note that there's no inherent limit to the size of the internal buffer: its size can always be enlarged or reduced.

Copy and move constructors (and assignment operators) are not available.

PROTECTED MEMBER FUNCTIONS

All members of std:streambuf and Eoi are available, as FBB::EoiBuf inherits from these classes.

PROTECTED STATIC MEMBER FUNCTIONS

The following two static members are provided as convenient functions for derived classes to convert the address of the first character of std::string objects to pointers to unsigned characters:

  • unsigned char *ucharPtr(std::string &str):
    The address of the first character of str is returned as a pointer to an unsigned character;

  • unsigned char const *ucharPtr(std::string const &str) const:
    Same as the previous member, but this time the address of the first character of str is returned as a pointer to an immutable unsigned character.

    EXAMPLE

    Here is an example from the implementation of EncryptBuf:

    #include "encryptbuf.ih"
    
    
    void EncryptBuf::flushBuffer()  // called by overflow when d_buffer is 
                                    // full and by end()
    {
        int srcLen = pptr() - pbase();
    
        int encryptedLen;
        if (
            not EVP_EncryptUpdate(d_ctx, 
                                  ucharPtr(d_encrypted), &encryptedLen, 
                                  ucharPtr(),  srcLen)
        )
            throw Exception{ 1 } << "Encrypt update failed";
    
        d_outStream.write(&d_encrypted[0], encryptedLen);
    
        setp();                     // reset the buffer
    }
    

    FILES

    bobcat/eoibuf - defines the class interface

    SEE ALSO

    bobcat(7), eoi(3bobcat)

    BUGS

    None Reported.

    BOBCAT PROJECT FILES

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