68 Log( Severity ,
const char * file ,
int line ) noexcept ;
83 static bool at( Severity ) noexcept ;
88 static bool atDebug() noexcept ;
98 Log(
const Log & ) = delete ;
100 Log & operator=(
const Log & ) = delete ;
101 Log & operator=(
Log && ) = delete ;
107 Severity m_severity ;
108 const char * m_file ;
115 return at( Log::Severity::Debug ) ;
120 return at( Log::Severity::InfoVerbose ) ;
125 return at( Log::Severity::InfoMoreVerbose ) ;
137#define G_LOG_IMP( expr , severity ) do { if(G::Log::at(severity)) G::Log((severity),__FILE__,__LINE__) << expr ; } while(0)
138#define G_LOG_IMP_IF( cond , expr , severity ) do { if(G::Log::at(severity)&&(cond)) G::Log((severity),__FILE__,__LINE__) << expr ; } while(0)
139#define G_LOG_IMP_ONCE( expr , severity ) do { static bool done__ = false ; if(!done__&&G::Log::at(severity)) { G::Log((severity),__FILE__,__LINE__) << expr ; done__ = true ; } } while(0)
141#if defined(G_WITH_DEBUG) || ( defined(_DEBUG) && ! defined(G_NO_DEBUG) )
142#define G_DEBUG( expr ) G_LOG_IMP( expr , G::Log::Severity::Debug )
143#define G_DEBUG_IF( cond , expr ) G_LOG_IMP_IF( cond , expr , G::Log::Severity::Debug )
144#define G_DEBUG_ONCE( expr ) G_LOG_IMP_ONCE( expr , G::Log::Severity::Debug )
146#define G_DEBUG( expr )
147#define G_DEBUG_IF( cond , expr )
148#define G_DEBUG_ONCE( group , expr )
151#if ! defined(G_NO_LOG)
152#define G_LOG( expr ) G_LOG_IMP( expr , G::Log::Severity::InfoVerbose )
153#define G_LOG_IF( cond , expr ) G_LOG_IMP_IF( cond , expr , G::Log::Severity::InfoVerbose )
154#define G_LOG_ONCE( expr ) G_LOG_IMP_ONCE( expr , G::Log::Severity::InfoVerbose )
157#define G_LOG_IF( cond , expr )
158#define G_LOG_ONCE( expr )
161#if ! defined(G_NO_LOG_MORE)
162#define G_LOG_MORE( expr ) G_LOG_IMP( expr , G::Log::Severity::InfoMoreVerbose )
163#define G_LOG_MORE_IF( cond , expr ) G_LOG_IMP_IF( cond , expr , G::Log::Severity::InfoMoreVerbose )
164#define G_LOG_MORE_ONCE( expr ) G_LOG_IMP_ONCE( expr , G::Log::Severity::InfoMoreVerbose )
166#define G_LOG_MORE( expr )
167#define G_LOG_MORE_IF( cond , expr )
168#define G_LOG_MORE_ONCE( expr )
171#if ! defined(G_NO_LOG_S)
172#define G_LOG_S( expr ) G_LOG_IMP( expr , G::Log::Severity::InfoSummary )
173#define G_LOG_S_IF( cond , expr ) G_LOG_IMP_IF( cond , expr , G::Log::Severity::InfoSummary )
174#define G_LOG_S_ONCE( expr ) G_LOG_IMP_ONCE( expr , G::Log::Severity::InfoSummary )
176#define G_LOG_S( expr )
177#define G_LOG_S_IF( cond , expr )
178#define G_LOG_S_ONCE( expr )
181#if ! defined(G_NO_WARNING)
182#define G_WARNING( expr ) G_LOG_IMP( expr , G::Log::Severity::Warning )
183#define G_WARNING_IF( cond , expr ) G_LOG_IMP_IF( cond , expr , G::Log::Severity::Warning )
184#define G_WARNING_ONCE( expr ) G_LOG_IMP_ONCE( expr , G::Log::Severity::Warning )
186#define G_WARNING( expr )
187#define G_WARNING_IF( cond , expr )
188#define G_WARNING_ONCE( expr )
191#if ! defined(G_NO_ERROR)
192#define G_ERROR( expr ) G_LOG_IMP( expr , G::Log::Severity::Error )
194#define G_ERROR( expr )
A class for doing iostream-based logging.
~Log()
Destructor. Writes the accumulated string to the log output.
Log(Severity, const char *file, int line) noexcept
Constructor.
static bool atDebug() noexcept
Returns at(Severity::Debug).
LogStream & operator<<(const char *s) noexcept
Streams 's' and then returns a stream for streaming more stuff into.
static bool atMoreVerbose() noexcept
Returns at(Severity::InfoMoreVerbose).
static bool at(Severity) noexcept
Returns true if G::LogOutput::output() would log at the given level.
static bool atVerbose() noexcept
Returns at(Severity::InfoVerbose).
A non-throwing wrapper for std::ostream, used by G::Log.