FBB::IBase64Streambuf(3) Input Filtering stream buffer doing base64 conversion

SYNOPSIS

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

DESCRIPTION

The information made available by IBase64Streambuf objects has been subject to base64 encoding or decoding. The information to be converted is made available to IBase64Streambuf object via std::istream objects.

The class IBase64Streambuf is a class template, using a FBB::CryptType template non-type parameter. Objects of the class FBB::IBase64Streambuf<FBB::ENCRYPT> base64 encode the information they receive, objects of the class FBB::IBase64Streambuf<FBB::DECRYPT> base64 decode the information they receive. See also section ENUMERATION below.

NAMESPACE

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

INHERITS FROM

FBB::IFilterStreambuf

MEMBER FUNCTIONS

All members of FBB::IFilterStreambuf are available, as IBase64Streambuf inherits from this class.

Overloaded move and/or copy assignment operators are not available.

ENUMERATION

IBase64Streambuf objects either base64 encode or decode information. IBase64Streambuf objects of the class FBB::IBase64Streambuf<FBB::ENCRYPT> base64 encode the data they receive, IBase64Streambuf objects of the class FBB::IBase64Streambuf<FBB::DECRYPT> base64 decode the data they receive.

The values ENCRYPT and DECRYPT are defined in the enum CryptType, which is defined in the FBB namespace.

CONSTRUCTOR

o
IBase64Streambuf<CryptType>(std::istream &in, size_t bufSize = 1000):
This constructor initializes the streambuf.
- IBase64Streambuf<ENCRYPT> objects perform base64 encoding;
- IBase64Streambuf<DECRYPT> objects perform base64 decoding;
- IBase64Streambuf<CryptType> objects obtain the bytes to encode or decode from std::istream &in;
- The IFilterStreambuf base class is initialized with a buffer of size bufSize, using a lower bound of 100. Copy- and move constructors are not available.

EXAMPLE

The example shows the construction of IBase64Streambuf<ENCRYPT> objects encode which are used to initialize a std::istream object. The information read from this istream is base64 encoded.

IBase64Streambuf<DECRYPT> objects (decode reads base64 encoded information from std::istream objects and decodes it again).

The std::istream din object is initialized with the IBase64Streambuf<DECRYPT> object, and its contents is sent to std::cout. The information that is presented at std::cin and that appears at std::cout should be identical.

#include <iostream>
#include <istream>
#include <bobcat/ibase64streambuf>
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
{
    switch (argv[1][0])
    {
        case 'e':
        {
            IBase64Streambuf<ENCRYPT> encode(cin);
            istream ein(&encode);
            cout << ein.rdbuf();
        }
        break;
        case 'd':
        {
            IBase64Streambuf<DECRYPT> decode(cin);
            istream din(&decode);
            cout << din.rdbuf();
        }
        break;
    
        case 'b':
        {
            IBase64Streambuf<ENCRYPT> encode(cin);
            istream ein(&encode);
            IBase64Streambuf<DECRYPT> decode(ein);
            istream din(&decode);
            cout << din.rdbuf();
        }
        break;
        default:
            cout << "Usage: " << argv[0] << " [edb] < infile > outfile\n"
                    "to base64 -e-ncode, -d-ecode or -b-oth\n";
        break;
    }
}

FILES

bobcat/ibase64streambuf - defines the class interface

BUGS

None reported.

DISTRIBUTION FILES

  • bobcat_4.02.00-x.dsc: detached signature;
  • bobcat_4.02.00-x.tar.gz: source archive;
  • bobcat_4.02.00-x_i386.changes: change log;
  • libbobcat1_4.02.00-x_*.deb: debian package holding the libraries;
  • libbobcat1-dev_4.02.00-x_*.deb: debian package holding the libraries, headers and manual pages;
  • 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 ([email protected]).