10#ifndef ERS_STREAM_FACTORY
11#define ERS_STREAM_FACTORY
13#include "ers/Context.h"
142 typedef Stream* ( *create_stream_callback )(
const std::string&,
const std::string& );
168 const std::string& message );
171 static void debug(
const Context& c,
const std::string& message,
193 void write_to( std::ostream& stream )
const;
203# define DEBUG_LEVEL 3
209#if !defined( ERS_FAST_DEBUG )
210# define ERS_DEBUG_0( ... ) \
212 char ers_debug_buf[256]; \
213 snprintf( ers_debug_buf, sizeof( ers_debug_buf ), __VA_ARGS__ ); \
214 ers::StreamFactory::debug( ERS_HERE, ers_debug_buf, ers::debug_0 ); \
217# define ERS_DEBUG_0( ... ) \
219 fprintf( stderr, "debug-0 " ); \
220 fprintf( stderr, __VA_ARGS__ ); \
221 fprintf( stderr, "\n" ); \
227#if ( DEBUG_LEVEL > 0 )
228# if ( !defined( ERS_FAST_DEBUG ) )
229# define ERS_DEBUG_1( ... ) \
231 char ers_debug_buf[256]; \
232 snprintf( ers_debug_buf, sizeof( ers_debug_buf ), __VA_ARGS__ ); \
233 ers::StreamFactory::debug( ERS_HERE, ers_debug_buf, ers::debug_1 ); \
236# define ERS_DEBUG_1( ... ) \
238 fprintf( stderr, "debug-1 " ); \
239 fprintf( stderr, __VA_ARGS__ ); \
240 fprintf( stderr, "\n" ); \
244# define ERS_DEBUG_1( ... )
250# define ERS_DEBUG_2( ... ) \
252 char ers_debug_buf[256]; \
253 snprintf( ers_debug_buf, sizeof( ers_debug_buf ), __VA_ARGS__ ); \
254 ers::StreamFactory::debug( ERS_HERE, ers_debug_buf, ers::debug_2 ); \
257# define ERS_DEBUG_2( ... )
263# define ERS_DEBUG_3( ... ) \
265 char ers_debug_buf[256]; \
266 snprintf( ers_debug_buf, sizeof( ers_debug_buf ), __VA_ARGS__ ); \
267 ers::StreamFactory::debug( ERS_HERE, ers_debug_buf, ers::debug_3 ); \
270# define ERS_DEBUG_3( ... )
275#define ERS_WARN( ... ) \
277 char ers_warn_buf[256]; \
278 snprintf( ers_warn_buf, sizeof( ers_warn_buf ), __VA_ARGS__ ); \
279 ers::StreamFactory::warning( ERS_HERE, ers_warn_buf ); \
*************DOUBLE PRECISION m_pi *DOUBLE PRECISION m_HvecTau2 DOUBLE PRECISION m_HvClone2 DOUBLE PRECISION m_gamma1 DOUBLE PRECISION m_gamma2 DOUBLE PRECISION m_thet1 DOUBLE PRECISION m_thet2 INTEGER m_IFPHOT *COMMON c_Taupair $ !Spin Polarimeter vector first Tau $ !Spin Polarimeter vector second Tau $ !Clone Spin Polarimeter vector first Tau $ !Clone Spin Polarimeter vector second Tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning st tau $ !Random Euler angle for cloning nd tau $ !Random Euler angle for cloning nd tau $ !Random Euler angle for cloning nd tau $ !phi of HvecTau1 $ !theta of HvecTau1 $ !phi of HvecTau2 $ !theta of HvecTau2 $ !super key
Source context for Issue.
Factory for Stream objects and repository of default streams.
static const char * key_for_severity(severity_t s)
finds key for severity_t
static void set_stream(severity_t, const std::string &key)
Stream * create_stream(severity_t s)
create a stream for severity_t
Stream * warning()
Warning stream.
static void dispatch(Issue *i, bool throw_error=false)
Sends an issue to the appropriate stream according to its severity_t.
static Stream * get_default_stream(severity_t s)
builds default stream for severity_t
bool register_factory(const std::string &name, create_stream_callback callback)
register a factory method
Stream *(* create_stream_callback)(const std::string &, const std::string &)
static void print_registered()
static const char * DEFAULT_STREAMS[]
keys for default streams
static StreamFactory * instance()
return the singleton
Stream * fatal()
Fatal stream.
stream_factory_collection m_factories
collection of factories to build streams
static StreamFactory * s_instance
singleton instance
void set(severity_t severity, Stream *s)
Sets the stream for a given severity_t.
Stream * get_stream(severity_t s)
get stream for severity_t
Stream * m_streams[severity_max]
array of pointers to streams per severity_t
void write_to(std::ostream &stream) const
write content of factory to stream
std::map< std::string, create_stream_callback > stream_factory_collection
static void debug(Issue *i, severity_t)
sends an Issue to the debug stream
Stream * error()
Error stream.
efhlt::Interface * factory(void)
std::ostream & operator<<(std::ostream &, const Issue &)
enum ers::_severity_t severity_t