24#ifndef quantlib_tracing_hpp
25#define quantlib_tracing_hpp
30#include <boost/current_function.hpp>
41 #if defined(QL_ENABLE_TRACING)
44 QL_FAIL(
"tracing support not available");
214#if defined(QL_ENABLE_TRACING)
216#define QL_DEFAULT_TRACER QuantLib::detail::Tracing::instance()
218#define QL_TRACE_ENABLE \
219QL_DEFAULT_TRACER.enable()
221#define QL_TRACE_DISABLE \
222QL_DEFAULT_TRACER.disable()
224#define QL_TRACE_ON(out) \
225QL_DEFAULT_TRACER.setStream(out)
227#define QL_TRACE(message) \
228if (QL_DEFAULT_TRACER.enabled()) \
230 QL_DEFAULT_TRACER.stream() << "trace[" << QL_DEFAULT_TRACER.depth() \
231 << "]: " << message << std::endl; \
235#define QL_TRACE_ENTER_FUNCTION \
236if (QL_DEFAULT_TRACER.enabled()) \
238 QL_DEFAULT_TRACER.down(); \
239 QL_DEFAULT_TRACER.stream() << "trace[" << QL_DEFAULT_TRACER.depth() \
241 << "Entering " << BOOST_CURRENT_FUNCTION \
246#define QL_TRACE_EXIT_FUNCTION \
247if (QL_DEFAULT_TRACER.enabled()) \
249 QL_DEFAULT_TRACER.stream() << "trace[" << QL_DEFAULT_TRACER.depth() \
251 << "Exiting " << BOOST_CURRENT_FUNCTION \
253 QL_DEFAULT_TRACER.up(); \
254 } catch (...) { QL_DEFAULT_TRACER.up(); } \
257#define QL_TRACE_LOCATION \
258QL_TRACE("At line " << __LINE__ << " in " << __FILE__)
260#define QL_TRACE_VARIABLE(variable) \
261QL_TRACE(#variable << " = " << variable)
265#define QL_DEFAULT_TRACER
266#define QL_TRACE_ENABLE
267#define QL_TRACE_DISABLE
268#define QL_TRACE_ON(out)
269#define QL_TRACE(message)
270#define QL_TRACE_ENTER_FUNCTION
271#define QL_TRACE_EXIT_FUNCTION
272#define QL_TRACE_LOCATION
273#define QL_TRACE_VARIABLE(variable)
Basic support for the singleton pattern.
void setStream(std::ostream &stream)
Classes and functions for error handling.
#define QL_FAIL(message)
throw an error (possibly with file and line information)
QL_INTEGER Integer
integer number
basic support for the singleton pattern