Provided by: libbobcat-dev_6.04.00-1ubuntu3_amd64 bug

NAME

       FBB::OFoldStream - Folds long lines

SYNOPSIS

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

DESCRIPTION

       FBB::OFoldStream  folds  long  lines written to it. The OFoldStream writes the (folded) lines to a second
       ostream which is either used by or opened by the OFoldStream object.

       OFoldStream objects never fold lines in the middle of series of  non-blank  characters  but  will  always
       break  a  line  at  white  space  characters.  The  resulting  lines will always appear to the right of a
       configurable left margin and to the left of a configurable right margin. There is a somewhat pathological
       exception to this: if a word is too long to fit in between the margins then  the  word  will  exceed  the
       right hand margin.

       The  indentation  used  for the left margins is configurable to either blanks (the default) or tabs. When
       tabs are used the width of a tab character is configurable,  using  a  default  of  8  positions  in  the
       destination stream.

       OFoldStream  is  implemented as a wrapper class around std::ostream and FBB::OFoldBuf and a more complete
       description of the folding process can be found in the ofoldbuf(3bobcat) man page.

NAMESPACE

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

INHERITS FROM

       std::ostream,
       (and privately from FBB::OFoldBuf)

ENUMERATION

       The  enumeration  TabsOrBlanks is used to select tabs or blanks when writing the indentation. The default
       is blanks. When tabs are selected the display width of tabs characters can be configured as  well  (using
       the default of 8 positions for each tab-character). The enumeration has two values:

       o      BLANKS:
              The default, indicating that the left margin is specified and written as a number of blanks;

       o      TABS:
              Indicating that the left margin is specified and written as a number of tab-characters.

       The  enumeration  TrailingBlanks is used to configure the OFoldStream object with respect to any trailing
       blanks that may appear on the final line. It is the same enumeration type  as  used  with  OFoldBuf  (cf.
       ofoldbuf(3bobcat)) having two values:

       o      IGNORE_TRAILING_BLANKS:
              This  indicates  that  trailing  blanks  appearing  at the final line if it is not terminated by a
              newline should not be written to the  destination  std::ostream.  This  is  the  default  used  by
              OFoldStream objects.

       o      KEEP_TRAILING_BLANKS:
              This  indicates that trailing blanks at the final line if it is not terminated by a newline should
              be written to the destination std::ostream

CONSTRUCTORS

       o      OFoldStream():
              This constructor initializes an OFoldStream object but does not associate it  with  a  destination
              stream.  It  uses  the values 0, 80, BLANKS, and IGNORE_TRAILING_BLANKSfor, resp. its left margin,
              right margin left-margin characters and TrailingBlanks handling mode.

       o      OFoldStream(char const *fname, size_t leftIndent = 0, size_t rightMargin = 80, TabsOrBlanks tob  =
              BLANKS, TrailingBlanks tb = IGNORE_TRAILING_BLANKS):
              This constructor initializes an OFoldStream object and opens (using std::ios::out) the destination
              stream using the name specified as its fname argument.

       o      OFoldStream(std::ostream &stream, size_t leftIndent = 0, size_t rightMargin = 80, TabsOrBlanks tob
              = BLANKS, TrailingBlanks tb = IGNORE_TRAILING_BLANKS):
              This  constructor  initializes  an  OFoldStream  object  and  uses  as  its destination stream the
              std::ostream stream.

       The destructor writes any buffered information  to  the  destination  stream  and  will  then  flush  the
       destination stream.

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

MEMBER FUNCTIONS

       All members of std::ostream are available, as FBB::OFoldStream inherits from this class.

       o      void close():
              This  member  flushes  any  pending  information  to  the  destination  stream and then closes the
              destination stream.

       o      void open(char const *fname, openmode mode = std::ios::out):
              This member associates the OFilterStream object with an std::ofstream  object  whose  filename  is
              provided and that should receive the folded information.

       o      void open(std::ostream &out):
              This member associates the OFilterStream object with the provided ostream object.

       o      void setMargins(size_t leftMargin, size_t rightMargin):
              This  member  can be used to modify the left- and right folding margins. Note that the left margin
              may also be modified using the FBB::lm and FBB::mlm manipulators.

       o      void setTrailingBlanks(TrailingBlanks tb):
              This member can be used to modify the currently used TrailingBlanks parameter.

       o      void useBlanks():
              This member can be used to select blanks  to be used when inserting left margins.

       o      void useTabs(size_t tabWidth = 8):
              This member can be used to select tab-characters to be  used  when  inserting  left  margins.  The
              second parameter is used to specify the display width of a tab-character.

STATIC MEMBER FUNCTIONS

       o      size_t leftMargin(std::ostream const &os):
              This  member returns the current left margin setting of the OFoldStream object passed to it as its
              argument. The member defines a std::ostream parameter since in many cases the  OFoldStream  object
              will   be   used  in  functions  themselves  defining  std::ostream  parameters.  Internally,  the
              std::ostream’s std::streambuf is down cast to an  OFoldBuf  and  an  FBB::Exception  exception  is
              thrown if that cast fails.

       o      size_t rightMargin(std::ostream const &os):
              This member returns the current right margin setting of the OFoldStream object passed to it as its
              argument.  The  member’s  parameter  is  down  cast in the same way as leftMargin()’s argument: an
              FBB::Exception exception is thrown if that cast fails.

EXAMPLE

       #include <iostream>
       #include <string>
       #include <bobcat/ofoldstream>

       using namespace std;
       using namespace FBB;

       void margins(ostream &out)
       {
           cout << OFoldStream::leftMargin(out) << ", " <<
                   OFoldStream::rightMargin(out) << endl;
       }

       int main()
       {
           OFoldStream out(cout, 4, 40);

           out << lm(4);

           string line;
           while (getline(cin, line))
               out << line << ’\n’;

           margins(out);
       }

FILES

       bobcat/ofoldstream - defines the class interface

SEE ALSO

       bobcat(7),  lm(3bobcat), mlm(3bobcat), ofoldbuf(3bobcat)

BUGS

       None Reported.

BOBCAT PROJECT FILES

       o      https://fbb-git.gitlab.io/bobcat/: gitlab project page;

       o      bobcat_6.04.00-x.dsc: detached signature;

       o      bobcat_6.04.00-x.tar.gz: source archive;

       o      bobcat_6.04.00-x_i386.changes: change log;

       o      libbobcat1_6.04.00-x_*.deb: debian package containing the libraries;

       o      libbobcat1-dev_6.04.00-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 the GNU General Public License (GPL).

AUTHOR

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

libbobcat-dev_6.04.00                               2005-2023                          FBB::OFoldStream(3bobcat)