Scroll to navigation

FBB::EoiBuf(3bobcat) End-Of-Information Base class FBB::EoiBuf(3bobcat)

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

EoiBuf():
The default constructor initializes an empty buffer.
EoiBuf(size_t size):
This initializes an empty buffer of a predefined size of size characters .

Note that there’s no inherent limit to the size of the internal buffer: itssize 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.

std::string &buffer():
A reference to the internal buffer is returned;
size_t bufSize() const:
The length (size) of the internal buffer is returned;
void resize(size_t size):
The size of the internal buffer is changed to size characters;
void setg(unsigned next, unsigned beyond):
The streambuf::eback member returns the address of the internal buffer’s first character, streambuf::gptr returns the address of the internal buffer’s next character, streambuf::egptr returns the the address of the internal buffer’s beyond character;
void setp():
The streambuf::pbase and pptr members return the address of the internal buffer’s first character, streambuf::epptr returns the address immediately beyond the internal buffer’s last character;
unsigned char *ucharPtr():
The address of the first character of the internal buffer is returnedas a pointer to an unsigned character;
unsigned char const *ucharPtr() const:
Same as the previous member, but this time the address of the firstcharacter of the internal buffer is returned as a pointer to animmutable unsigned character.

PROTECTED STATIC MEMBER FUNCTIONS

The following two static members are provided as convenient functions forderived classes to convert the address of the first character ofstd::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 firstcharacter 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

https://fbb-git.gitlab.io/bobcat/: gitlab project page;
bobcat_5.11.01-x.dsc: detached signature;
bobcat_5.11.01-x.tar.gz: source archive;
bobcat_5.11.01-x_i386.changes: change log;
libbobcat1_5.11.01-x_*.deb: debian package containing the libraries;
libbobcat1-dev_5.11.01-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 theGNU General Public License (GPL).

AUTHOR

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

2005-2022 libbobcat-dev_5.11.01