1 #ifndef GAUDIKERNEL_MSGSTREAM_H
2 #define GAUDIKERNEL_MSGSTREAM_H
5 #include "GaudiKernel/IMessageSvc.h"
6 #include "GaudiKernel/SerializeSTL.h"
29 typedef std::ios_base::fmtflags
FLAG_TYPE;
61 : m_service(msg.m_service),
62 m_active(msg.m_active),
64 m_currLevel(msg.m_currLevel),
65 m_useColors(msg.m_useColors),
66 m_inactCounter(msg.m_inactCounter)
94 const std::string&
buffer()
const {
98 std::ostringstream&
stream() {
178 return isActive() ? m_stream.flags() : 0;
180 long flags(FLAG_TYPE v) {
181 return isActive() ? m_stream.flags(v) : 0;
183 long setf(FLAG_TYPE v) {
184 return isActive() ? m_stream.setf(v) : 0;
187 return isActive() ? m_stream.width() : 0;
190 return isActive() ? m_stream.width(v) : 0;
193 return isActive() ? m_stream.fill() : (char)-1;
196 return isActive() ? m_stream.fill(v) : (char)-1;
199 return isActive() ? m_stream.precision(): 0;
202 return isActive() ? m_stream.precision(v): 0;
205 return isActive() ? m_stream.rdstate () : std::ios_base::failbit;
208 return isActive() ? m_stream.good () : 0;
211 return isActive() ? m_stream.eof () : 0;
214 return isActive() ? m_stream.bad() : 0;
216 long setf(FLAG_TYPE _f, FLAG_TYPE _m) {
217 return isActive() ? m_stream.setf(_f, _m) : 0;
219 void unsetf(FLAG_TYPE _l) {
220 if (
isActive() ) m_stream.unsetf(_l);
222 void clear(STATE_TYPE _i = std::ios_base::failbit) {
223 if (
isActive() ) m_stream.clear(_i);
247 #if defined(GAUDI_V20_COMPAT) && !defined(G21_NO_ENDREQ)
248 #define endreq endmsg
256 template<
class _E>
inline
257 MsgStream& operator<<( MsgStream& s, const std::_Fillobj<_E>& obj) {
265 template<
class _Tm>
inline
266 MsgStream& operator << (MsgStream& s, const std::_Smanip<_Tm>& manip) {
274 #elif defined (__GNUC__)
276 const std::_Setiosflags &manip) {
284 const std::_Resetiosflags &manip) {
292 const std::_Setbase &manip) {
300 const std::_Setprecision &manip) {
308 const std::_Setw &manip) {
319 log.
setf(std::ios_base::dec, std::ios_base::basefield);
324 log.
setf(std::ios_base::hex, std::ios_base::basefield);
329 #else // GCC, version << 3
330 template<
class _Tm>
inline
332 MsgStream& operator << (MsgStream& s, const std::smanip<_Tm>& manip) {
339 #endif // WIN32 or (__GNUC__)
352 template <
typename T>
367 MsgStream& operator << (MsgStream& lhs, const std::_Setfill<T> &manip) {
377 #endif // GAUDIKERNEL_MSGSTREAM_H
std::ostringstream & stream()
Access string MsgStream.
IMessageSvc * m_service
Pointer to message service if buffer has send.
Definition of the MsgStream class used to transmit messages.
const std::string & buffer() const
Access string buffer.
MSG::Level currentLevel()
Retrieve current stream output level.
bool m_useColors
use colors
GAUDI_API void resetColor()
Reset the colors to defaults.
MSG::Level level()
Retrieve output level.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
bool isActive() const
Accessor: is MsgStream active.
MsgStream & write(const char *buff, int len)
virtual void incrInactiveCount(MSG::Level level, const std::string &src)=0
Increment deactivated message count.
MsgStream & report(int lvl)
Initialize report of new message: activate if print level is sufficient.
virtual GAUDI_API MsgStream & doOutput()
Output method.
static bool m_countInactive
Flag to state if the inactive messages has to be counted.
IInactiveMessageCounter * m_inactCounter
Pointer to service counting messages prepared but not printed because of wrong level.
std::string m_source
Use std::string for source information to be passed to the message service.
MSG::Level m_level
Debug level of the message service.
MsgStream & operator<<(MsgStream &s, const std::smanip< _Tm > &manip)
I/O Manipulator for setfill.
GAUDI_API void setColor(MSG::Color col)
Set the text color.
std::ios_base::iostate STATE_TYPE
MsgStream & operator<<(MsgStream &(*_f)(MsgStream &))
Accept MsgStream modifiers.
void clear(STATE_TYPE _i=std::ios_base::failbit)
void deactivate()
Deactivate MsgStream.
std::ostringstream m_stream
String MsgStream associated to buffer.
The IMessage is the interface implemented by the message service.
void setMsgSvc(IMessageSvc *svc)
Update IMessageSvc pointer.
bool m_active
Flag set to true if formatting engine is active.
std::string m_buffer
Use standard string for information buffering.
MSG::Level m_currLevel
Current debug level.
GAUDI_API MsgStream(IMessageSvc *svc, int buffer_length=128)
Standard constructor: Connect to message service for output.
long flags() const
IOS emulation.
Print levels enumeration.
Forward declarations for the functions in SerializeSTL.h.
void setLevel(int level)
Update outputlevel.
void activate()
Activate MsgStream.
std::ios_base::fmtflags FLAG_TYPE
Error return code in case ios modification is requested for inactive streams.
static GAUDI_API bool enableCountInactive(bool value=true)
Enable/disable the count of inactive messages.
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
virtual GAUDI_API ~MsgStream()=default
Standard destructor.
static GAUDI_API bool countInactive()
Returns the state of the counting of inactive messages (enabled/disabled).
void unsetf(FLAG_TYPE _l)