Gaudi Framework, version v23r7

Home   Generated: Wed Mar 20 2013
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Protected Attributes | Static Protected Attributes | Private Types | List of all members
MsgStream Class Reference

Definition of the MsgStream class used to transmit messages. More...

#include <GaudiKernel/MsgStream.h>

Collaboration diagram for MsgStream:
Collaboration graph
[legend]

Public Member Functions

GAUDI_API MsgStream (IMessageSvc *svc, int buffer_length=128)
 Standard constructor: Connect to message service for output.
 
GAUDI_API MsgStream (IMessageSvc *svc, const std::string &source, int buffer_length=128)
 Standard constructor: Connect to message service for output.
 
 MsgStream (const MsgStream &msg)
 Copy constructor.
 
virtual GAUDI_API ~MsgStream ()
 Standard destructor.
 
MsgStreamreport (int lvl)
 Initialize report of new message: activate if print level is sufficient.
 
virtual GAUDI_API MsgStreamdoOutput ()
 Output method.
 
const std::stringbuffer () const
 Access string buffer.
 
std::ostringstreamstream ()
 Access string MsgStream.
 
void setMsgSvc (IMessageSvc *svc)
 Update IMessageSvc pointer.
 
void setLevel (int level)
 Update outputlevel.
 
MSG::Level level ()
 Retrieve output level.
 
MSG::Level currentLevel ()
 Retrieve current stream output level.
 
void activate ()
 Activate MsgStream.
 
void deactivate ()
 Deactivate MsgStream.
 
bool isActive () const
 Accessor: is MsgStream active.
 
MsgStreamflush ()
 
MsgStreamwrite (const char *buff, int len)
 
MsgStreamoperator<< (MsgStream &(*_f)(MsgStream &))
 Accept MsgStream modifiers.
 
MsgStreamoperator<< (std::ostream &(*_f)(std::ostream &))
 Accept oMsgStream modifiers.
 
MsgStreamoperator<< (std::ios &(*_f)(std::ios &))
 Accept ios modifiers.
 
MsgStreamoperator<< (MSG::Level level)
 Accept MsgStream activation using MsgStreamer operator.
 
MsgStreamoperator<< (longlong arg)
 
MsgStreamoperator<< (std::ios_base &(*_f)(std::ios_base &))
 Accept ios base class modifiers.
 
long flags () const
 IOS emulation.
 
long flags (FLAG_TYPE v)
 
long setf (FLAG_TYPE v)
 
int width () const
 
int width (int v)
 
char fill () const
 
char fill (char v)
 
int precision () const
 
int precision (int v)
 
int rdstate () const
 
int good () const
 
int eof () const
 
int bad () const
 
long setf (FLAG_TYPE _f, FLAG_TYPE _m)
 
void unsetf (FLAG_TYPE _l)
 
void clear (STATE_TYPE _i=std::ios_base::failbit)
 
GAUDI_API void setColor (MSG::Color col)
 Set the text color.
 
GAUDI_API void setColor (MSG::Color fg, MSG::Color bg)
 Set the foreground and background colors.
 
GAUDI_API void resetColor ()
 Reset the colors to defaults.
 

Static Public Member Functions

static GAUDI_API bool enableCountInactive (bool value=true)
 Enable/disable the count of inactive messages.
 
static GAUDI_API bool countInactive ()
 Returns the state of the counting of inactive messages (enabled/disabled).
 

Protected Attributes

IMessageSvcm_service
 Pointer to message service if buffer has send.
 
std::string m_buffer
 Use standard string for information buffering.
 
std::string m_source
 Use std::string for source information to be passed to the message service.
 
std::ostringstream m_stream
 String MsgStream associated to buffer.
 
bool m_active
 Flag set to true if formatting engine is active.
 
MSG::Level m_level
 Debug level of the message service.
 
MSG::Level m_currLevel
 Current debug level.
 
bool m_useColors
 use colors
 
IInactiveMessageCounterm_inactCounter
 Pointer to service counting messages prepared but not printed because of wrong level.
 

Static Protected Attributes

static bool m_countInactive = false
 Flag to state if the inactive messages has to be counted.
 

Private Types

typedef std::ios_base::fmtflags FLAG_TYPE
 Error return code in case ios modification is requested for inactive streams.
 
typedef std::ios_base::iostate STATE_TYPE
 

Detailed Description

Definition of the MsgStream class used to transmit messages.

This class is intended to ease the use of error logging to the message service

Author
M.Frank
Sebastien Ponce

Definition at line 24 of file MsgStream.h.

Member Typedef Documentation

Error return code in case ios modification is requested for inactive streams.

Definition at line 29 of file MsgStream.h.

Definition at line 30 of file MsgStream.h.

Constructor & Destructor Documentation

MsgStream::MsgStream ( IMessageSvc svc,
int  buffer_length = 128 
)

Standard constructor: Connect to message service for output.

Definition at line 43 of file MsgStream.cpp.

: m_service(svc),
m_source(""),
m_active(false),
{
setLevel((0==svc) ? MSG::INFO : svc->outputLevel());
m_useColors = (0==svc) ? false : svc->useColor();
#ifndef NDEBUG
m_inactCounter = svc ? Gaudi::Cast<IInactiveMessageCounter>(svc) : 0;
#endif
}
MsgStream::MsgStream ( IMessageSvc svc,
const std::string source,
int  buffer_length = 128 
)

Standard constructor: Connect to message service for output.

Definition at line 56 of file MsgStream.cpp.

: m_service(svc),
m_source(source),
m_active(false),
{
setLevel((0==svc) ? MSG::INFO : svc->outputLevel(source));
m_useColors = (0==svc) ? false : svc->useColor();
#ifndef NDEBUG
m_inactCounter = svc ? Gaudi::Cast<IInactiveMessageCounter>(svc) : 0;
#endif
}
MsgStream::MsgStream ( const MsgStream msg)
inline

Copy constructor.

Definition at line 60 of file MsgStream.h.

{
try { // ignore exception if we cannot copy the string
}
catch (...) {}
}
MsgStream::~MsgStream ( )
virtual

Standard destructor.

Definition at line 69 of file MsgStream.cpp.

{
}

Member Function Documentation

void MsgStream::activate ( )
inline

Activate MsgStream.

Definition at line 119 of file MsgStream.h.

{
m_active = true;
}
int MsgStream::bad ( ) const
inline

Definition at line 212 of file MsgStream.h.

{
return isActive() ? m_stream.bad() : 0;
}
const std::string& MsgStream::buffer ( ) const
inline

Access string buffer.

Definition at line 93 of file MsgStream.h.

{
return m_buffer;
}
void MsgStream::clear ( STATE_TYPE  _i = std::ios_base::failbit)
inline

Definition at line 221 of file MsgStream.h.

{
if ( isActive() ) m_stream.clear(_i);
}
bool MsgStream::countInactive ( )
static

Returns the state of the counting of inactive messages (enabled/disabled).

Definition at line 38 of file MsgStream.cpp.

{
}
MSG::Level MsgStream::currentLevel ( )
inline

Retrieve current stream output level.

Definition at line 115 of file MsgStream.h.

{
return m_currLevel;
}
void MsgStream::deactivate ( )
inline

Deactivate MsgStream.

Definition at line 123 of file MsgStream.h.

{
m_active = false;
}
MsgStream & MsgStream::doOutput ( )
virtual

Output method.

Definition at line 72 of file MsgStream.cpp.

{
try {
// This piece of code may throw and we cannot afford it when we print a message
// in the middle of a catch block.
if ( isActive() ) {
if ( m_service != 0 ) {
}
else {
}
}
m_stream.str("");
} catch(...) {}
return *this;
}
bool MsgStream::enableCountInactive ( bool  value = true)
static

Enable/disable the count of inactive messages.

Returns the previous state.

Definition at line 32 of file MsgStream.cpp.

{
bool old = m_countInactive;
m_countInactive = value;
return old;
}
int MsgStream::eof ( ) const
inline

Definition at line 209 of file MsgStream.h.

{
return isActive() ? m_stream.eof () : 0;
}
char MsgStream::fill ( ) const
inline

Definition at line 191 of file MsgStream.h.

{
return isActive() ? m_stream.fill() : (char)-1;
}
char MsgStream::fill ( char  v)
inline

Definition at line 194 of file MsgStream.h.

{
return isActive() ? m_stream.fill(v) : (char)-1;
}
long MsgStream::flags ( ) const
inline

IOS emulation.

Definition at line 176 of file MsgStream.h.

{
return isActive() ? m_stream.flags() : 0;
}
long MsgStream::flags ( FLAG_TYPE  v)
inline

Definition at line 179 of file MsgStream.h.

{
return isActive() ? m_stream.flags(v) : 0;
}
MsgStream& MsgStream::flush ( )
inline

Definition at line 131 of file MsgStream.h.

{
if ( isActive() ) m_stream.flush();
return *this;
}
int MsgStream::good ( ) const
inline

Definition at line 206 of file MsgStream.h.

{
return isActive() ? m_stream.good () : 0;
}
bool MsgStream::isActive ( ) const
inline

Accessor: is MsgStream active.

Definition at line 127 of file MsgStream.h.

{
return m_active;
}
MSG::Level MsgStream::level ( )
inline

Retrieve output level.

Definition at line 111 of file MsgStream.h.

{
return m_level;
}
MsgStream& MsgStream::operator<< ( MsgStream &(*)(MsgStream &)  _f)
inline

Accept MsgStream modifiers.

Definition at line 141 of file MsgStream.h.

{
if ( isActive() ) _f(*this);
return *this;
}
MsgStream& MsgStream::operator<< ( std::ostream &(*)(std::ostream &)  _f)
inline

Accept oMsgStream modifiers.

Definition at line 146 of file MsgStream.h.

{
if ( isActive() ) _f(m_stream);
return *this;
}
MsgStream& MsgStream::operator<< ( std::ios &(*)(std::ios &)  _f)
inline

Accept ios modifiers.

Definition at line 151 of file MsgStream.h.

{
if ( isActive() ) _f(m_stream);
return *this;
}
MsgStream& MsgStream::operator<< ( MSG::Level  level)
inline

Accept MsgStream activation using MsgStreamer operator.

Definition at line 156 of file MsgStream.h.

{
return report(level);
}
MsgStream& MsgStream::operator<< ( longlong  arg)
inline

Definition at line 159 of file MsgStream.h.

{
try {
// this may throw, and we cannot afford it if the stream is used in a catch block
if(isActive()) {
m_stream << arg;
}
} catch (...) {}
return *this;
}
MsgStream& MsgStream::operator<< ( std::ios_base &(*)(std::ios_base &)  _f)
inline

Accept ios base class modifiers.

Definition at line 170 of file MsgStream.h.

{
if ( isActive() ) _f(m_stream);
return *this;
}
int MsgStream::precision ( ) const
inline

Definition at line 197 of file MsgStream.h.

{
return isActive() ? m_stream.precision(): 0;
}
int MsgStream::precision ( int  v)
inline

Definition at line 200 of file MsgStream.h.

{
return isActive() ? m_stream.precision(v): 0;
}
int MsgStream::rdstate ( ) const
inline

Definition at line 203 of file MsgStream.h.

{
return isActive() ? m_stream.rdstate () : std::ios_base::failbit;
}
MsgStream& MsgStream::report ( int  lvl)
inline

Initialize report of new message: activate if print level is sufficient.

Definition at line 75 of file MsgStream.h.

{
lvl = (lvl >= MSG::NUM_LEVELS) ?
MSG::ALWAYS : (lvl<MSG::NIL) ? MSG::NIL : lvl;
if ((m_currLevel=MSG::Level(lvl)) >= level()) {
} else {
#ifndef NDEBUG
}
#endif
}
return *this;
}
void MsgStream::resetColor ( )

Reset the colors to defaults.

Definition at line 117 of file MsgStream.cpp.

{
#ifndef _WIN32
if ( m_useColors ) {
try { // this may throw and we must not do it
}
catch(...) {}
}
#endif
}
void MsgStream::setColor ( MSG::Color  col)

Set the text color.

Definition at line 90 of file MsgStream.cpp.

{
#ifndef _WIN32
if ( m_useColors) {
int fc = 90 + col;
try { // this may throw and we must not do it
m_stream << "[" << fc << ";1m";
}
catch(...) {}
}
#endif
}
void MsgStream::setColor ( MSG::Color  fg,
MSG::Color  bg 
)

Set the foreground and background colors.

Definition at line 102 of file MsgStream.cpp.

{
#ifndef _WIN32
if ( m_useColors ) {
try { // this may throw and we must not do it
int fc = 90 + fg;
m_stream << "[" << fc;
int bc = 100 + bg;
m_stream << ";" << bc;
m_stream << ";1m";
}
catch(...) {}
}
#endif
}
long MsgStream::setf ( FLAG_TYPE  v)
inline

Definition at line 182 of file MsgStream.h.

{
return isActive() ? m_stream.setf(v) : 0;
}
long MsgStream::setf ( FLAG_TYPE  _f,
FLAG_TYPE  _m 
)
inline

Definition at line 215 of file MsgStream.h.

{
return isActive() ? m_stream.setf(_f, _m) : 0;
}
void MsgStream::setLevel ( int  level)
inline

Update outputlevel.

Definition at line 105 of file MsgStream.h.

void MsgStream::setMsgSvc ( IMessageSvc svc)
inline

Update IMessageSvc pointer.

Definition at line 101 of file MsgStream.h.

{
m_service = svc;
}
std::ostringstream& MsgStream::stream ( )
inline

Access string MsgStream.

Definition at line 97 of file MsgStream.h.

{
return m_stream;
}
void MsgStream::unsetf ( FLAG_TYPE  _l)
inline

Definition at line 218 of file MsgStream.h.

{
if ( isActive() ) m_stream.unsetf(_l);
}
int MsgStream::width ( ) const
inline

Definition at line 185 of file MsgStream.h.

{
return isActive() ? m_stream.width() : 0;
}
int MsgStream::width ( int  v)
inline

Definition at line 188 of file MsgStream.h.

{
return isActive() ? m_stream.width(v) : 0;
}
MsgStream& MsgStream::write ( const char *  buff,
int  len 
)
inline

Definition at line 136 of file MsgStream.h.

{
if ( isActive() ) m_stream.write(buff, len);
return *this;
}

Member Data Documentation

bool MsgStream::m_active
protected

Flag set to true if formatting engine is active.

Definition at line 41 of file MsgStream.h.

std::string MsgStream::m_buffer
protected

Use standard string for information buffering.

Definition at line 35 of file MsgStream.h.

bool MsgStream::m_countInactive = false
staticprotected

Flag to state if the inactive messages has to be counted.

Definition at line 52 of file MsgStream.h.

MSG::Level MsgStream::m_currLevel
protected

Current debug level.

Definition at line 45 of file MsgStream.h.

IInactiveMessageCounter* MsgStream::m_inactCounter
protected

Pointer to service counting messages prepared but not printed because of wrong level.

Definition at line 50 of file MsgStream.h.

MSG::Level MsgStream::m_level
protected

Debug level of the message service.

Definition at line 43 of file MsgStream.h.

IMessageSvc* MsgStream::m_service
protected

Pointer to message service if buffer has send.

Definition at line 33 of file MsgStream.h.

std::string MsgStream::m_source
protected

Use std::string for source information to be passed to the message service.

Definition at line 37 of file MsgStream.h.

std::ostringstream MsgStream::m_stream
protected

String MsgStream associated to buffer.

Definition at line 39 of file MsgStream.h.

bool MsgStream::m_useColors
protected

use colors

Definition at line 47 of file MsgStream.h.


The documentation for this class was generated from the following files:

Generated at Wed Mar 20 2013 17:59:47 for Gaudi Framework, version v23r7 by Doxygen version 1.8.2 written by Dimitri van Heesch, © 1997-2004