1
0
mirror of https://github.com/wfjm/w11.git synced 2026-02-02 15:11:46 +00:00
Files
wfjm.w11/tools/src/librtools/RosFill.cpp
2019-07-19 19:55:51 +02:00

79 lines
2.3 KiB
C++

// $Id: RosFill.cpp 1186 2019-07-12 17:49:59Z mueller $
// SPDX-License-Identifier: GPL-3.0-or-later
// Copyright 2000-2011 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
//
// Revision History:
// Date Rev Version Comment
// 2011-02-25 364 1.1 Support << also to string
// 2011-01-30 357 1.0 Adopted from RosFill
// 2000-02-29 - - Last change on RosFill
// ---------------------------------------------------------------------------
/*!
\brief Implemenation of RosFill .
*/
#include "RosFill.hpp"
using namespace std;
/*!
\class Retro::RosFill
\brief I/O appicator to generate fill characters.
An \c RosFill object will add a given number of fill characters to an output
stream each time the object is inserted into the stream. The fill character
and the repeat count are specified when the object is constructed.
A typical usage of \c RosFill is to implement indention, especially when the
amount of indention is only known at runtime. The a Dump() function of a
class may use use \c RosFill following the pattern:
\code
void xyz::Dump(ostream& os, int indent) const
{
RosFill bl(indent);
os << bl << "-- xyz " << " @ " << this << endl;
os << bl << " fMember1: " << fMember1 << endl;
os << bl << " fMember2: " << fMember2 << endl;
fEmbeddedClass.Dump(os, indent+2);
return;
}
\endcode
The indention is passed with \c indent. The object \c bl is setup to
create \c indent blanks and thrown into the outstream \c os at the
start of each output line. The \c Dump() function of member variables of
class type is called with a increamented indention (here \c indent+2).
This finally produces a nicely structured output.
*/
// all method definitions in namespace Retro
namespace Retro {
//------------------------------------------+-----------------------------------
/*!
\relates RosFill
\brief ostream insertion operator.
*/
std::ostream& operator<<(std::ostream& os, const RosFill& obj)
{
for (int i=0; i<obj.Count(); i++) os.put(obj.Fill());
return os;
}
//------------------------------------------+-----------------------------------
/*!
\relates RosFill
\brief string insertion operator.
*/
std::string& operator<<(std::string& os, const RosFill& obj)
{
for (int i=0; i<obj.Count(); i++) os.push_back(obj.Fill());
return os;
}
} // end namespace Retro