logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

FBB::IQuotedPrintableBuf - Input Filtering stream buffer doing quoted printable conversions

Author

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

libbobcat-dev_6.07.01                               2005-2025                  FBB::IQuotedPrintableBuf(3bobcat)

Bobcat

       Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.

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;

Bugs

       None reported.

Constructor

       o      IQuotedPrintableBuf<CryptType>(std::istream&in,size_tbufSize=1000):
              This constructor initializes the streambuf.

              - IQuotedPrintableBuf<ENCODE> objects perform quoted-printable encoding;
              - IQuotedPrintableBuf<DECODE> objects perform quoted-printable decoding;
              -  IQuotedPrintableBuf<CryptType>  objects  obtain the bytes to encode or decode from std::istream&in;
              - The IFilterBuf base class is initialized with a buffer of size bufSize, using a lower  bound  of
              100 characters.

              The constructor uses a configurable buffer size for reading. Characters read into the buffer which
              are  not  part  of  the  actual quoted-printable encoded data are unavailable after completing the
              quoted-printable decoding. If information beyond the quoted-printable input  block  should  remain
              available, then a buffer size of 1 should be specified.

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

Description

       The  information  made  available  by  IQuotedPrintableBuf  objects is either quoted-printable encoded or
       decoded. The information to convert is read by IQuotedPrintableBuf objects via std::istream objects.

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

       Quoted-printable     encoding     is     sometimes    used    in    e-mail    attachments    (See    also
       https://en.wikipedia.org/wiki/Quoted-printable and https://www.ietf.org/rfc/rfc2045.txt  (section  6.7)).
       Its main characteristics are:

       o      Lines are at most 76 characters long;

       o      Lines longer than 76 characters are split into sub-lines, using =\n combinations to indicate `soft
              line breaks’. Lines not ending in soft line breaks indicate true end of lines.

       o      All  printable characters, except for the = character and (final) blank characters just before the
              end of lines, are copied as-is, all other characters are escaped by writing =XX sequences, with XX
              being the ascii-character representation of the hexadecimal value of the escaped character  (e.g.,
              the = character is encoded as =3D, a final space before end-of-line is encoded as =20, a final tab
              as =09). Only capital letters are used when escaping characters.

Enumeration

IQuotedPrintableBuf objects either encode or  decode  quoted-printable  information.  IQuotedPrintableBuf
       objects   of   the   class   FBB::IQuotedPrintableBuf<FBB::ENCODE>   encode   the   data   they  receive,
       IQuotedPrintableBuf objects of the  class  FBB::IQuotedPrintableBuf<FBB::DECODE>  decode  the  data  they
       receive.

       The values ENCODE and DECODE are defined in the enumCryptType, defined in the FBB namespace.

Example

       The  example  shows  the  construction  of  IQuotedPrintableBuf<ENCODE>  objects encode which are used to
       initialize a std::istream object. The information read from this istream is quoted-printable encoded.

       IQuotedPrintableBuf<DECODE> objects read quoted-printable encoded information from std::istream  objects,
       decoding the information.

       The  std::istreamdin object is initialized with the IQuotedPrintableBuf<DECODE> object, and its content
       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/iquotedprintablebuf>

       using namespace std;
       using namespace FBB;

       int main(int argc, char **argv)
       {
           if (argc == 1)
           {
               cout << "Usage: " << argv[0] << " [edb] < infile > outfile\n"
                           "to quoted printable -e-ncode, -d-ecode or -b-oth\n";
               return 0;
           }

           switch (argv[1][0])
           {
               case ’e’:
               {
                   IQuotedPrintableBuf<ENCODE> encode(cin);
                   istream ein(&encode);
                   cout << ein.rdbuf();
               }
               break;

               case ’d’:
               {
                   IQuotedPrintableBuf<DECODE> decode(cin);
                   istream din(&decode);
                   cout << din.rdbuf();
               }
               break;

               case ’b’:
               {
                   IQuotedPrintableBuf<ENCODE> encode(cin);
                   istream ein(&encode);

                   IQuotedPrintableBuf<DECODE> decode(ein);
                   istream din(&decode);
                   cout << din.rdbuf();
               }
               break;
           }
       }

Files

bobcat/iquotedprintablebuf - defines the class interface

Inherits From

FBB::IFilterBuf

Member Functions

       All members of FBB::IFilterBuf are available, as IQuotedPrintableBuf inherits from this class.

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

Name

       FBB::IQuotedPrintableBuf - Input Filtering stream buffer doing quoted printable conversions

Namespace

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

See Also

bobcat(7),     isymcryptstreambuf(3bobcat),     iquotedprintablestream(3bobcat),     ifilterbuf(3bobcat),
       ofilterbuf(3bobcat), std::streambuf.

Synopsis

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

See Also