42#define KLF_SHORT_TIME qPrintable(klfTimeOfDay())
66class KLFDebugObjectWatcherPrivate;
77 void debugObjectDestroyed(
QObject *
object);
84 KLFDebugObjectWatcherPrivate *p;
96 __klf_dbg_hdr(
QDebug dbg,
const char * funcname,
const char *refinstance,
const char * shorttime);
99inline const T& __klf_debug_tee(
const T& expr)
100{ qDebug()<<
"TEE VALUE: "<<expr;
return expr; }
103inline const T& __klf_debug_tee2(
const T& expr,
QDebug dbg,
const char *where,
const char *what)
106{
__klf_dbg_hdr(dbg, where, NULL, NULL)<<
"`"<<what<<
"': "<<expr;
return expr; }
110# define KLF_DEBUG_DECLARE_REF_INSTANCE( expr ) \
111 protected: inline QString __klf_debug_ref_instance() const { return QString("[")+ (expr) + "]" ; }
113# define KLF_DEBUG_DECLARE_ASSIGNABLE_REF_INSTANCE() \
114 public: QString __klf_debug_this_ref_instance; \
115 protected: inline QString __klf_debug_ref_instance() const { return __klf_debug_this_ref_instance; }
116# define KLF_DEBUG_ASSIGN_REF_INSTANCE(object, ref_instance) \
117 (object)->__klf_debug_this_ref_instance = QString("[%1]").arg((ref_instance))
118# define KLF_DEBUG_ASSIGN_SAME_REF_INSTANCE(object) \
119 (object)->__klf_debug_this_ref_instance = __klf_debug_ref_instance();
121# define KLF_DEBUG_TIME_BLOCK(msg) KLFDebugBlockTimer __klf_debug_timer_block(QString("")+msg)
122# define KLF_DEBUG_BLOCK(msg) KLFDebugBlock __klf_debug_block(QString("")+msg)
123# define KLF_DEBUG_TEE(expr) \
124 __klf_debug_tee2(expr, qDebug(), KLF_FUNC_NAME, #expr)
125# define klfDebugf( arglist ) qDebug arglist
126# define klfDbg( streamableItems ) \
127 __klf_dbg_hdr(qDebug(), KLF_FUNC_NAME, qPrintable(__klf_debug_ref_instance()), NULL) << streamableItems
128# define klfDbgT( streamableItems ) \
129 __klf_dbg_hdr(qDebug(), KLF_FUNC_NAME, qPrintable(__klf_debug_ref_instance()), KLF_SHORT_TIME) << streamableItems
130# define klfDbgSt( streamableItems ) \
131 __klf_dbg_hdr(qDebug(), KLF_FUNC_NAME, NULL, NULL) << streamableItems
132# define klfDbgStT( streamableItems ) \
133 __klf_dbg_hdr(qDebug(), KLF_FUNC_NAME, NULL, KLF_SHORT_TIME) << streamableItems
135# define KLF_DEBUG_WATCH_OBJECT( qobj ) \
136 { KLFDebugObjectWatcher::getWatcher()->registerObjectRefInfo((qobj), #qobj) ; \
137 connect((qobj), SIGNAL(destroyed()), \
138 KLFDebugObjectWatcher::getWatcher(), SLOT(debugObjectDestroyedFromSender())); \
145# define KLF_DEBUG_DECLARE_REF_INSTANCE( expr )
146# define KLF_DEBUG_DECLARE_ASSIGNABLE_REF_INSTANCE()
147# define KLF_DEBUG_ASSIGN_REF_INSTANCE(object, ref_instance)
148# define KLF_DEBUG_ASSIGN_SAME_REF_INSTANCE(object)
151# define KLF_DEBUG_TIME_BLOCK(msg)
152# define KLF_DEBUG_BLOCK(msg)
154# define KLF_DEBUG_TEE(expr) (expr)
156# define klfDebugf(arglist)
158# define klfDbg( streamableItems )
159# define klfDbgT( streamableItems )
160# define klfDbgSt( streamableItems )
161# define klfDbgStT( streamableItems )
163# define KLF_DEBUG_WATCH_OBJECT( qobj )
171#define klfWarning(streamableItems) __klf_warning_hdr(qWarning(), KLF_FUNC_NAME, KLF_SHORT_TIME) << streamableItems
175#if defined(__STDC_VERSION__) && __STDC_VERSION__ < 199901L
176# if defined(__GNUC__) && __GNUC__ >= 2
177# define __func__ __FUNCTION__
179# define __func__ (qPrintable(QString("<in %2 line %1>").arg(__LINE__).arg(__FILE__)))
184# if (defined(Q_CC_GNU) && !defined(Q_OS_SOLARIS)) || defined(Q_CC_HPACC) || defined(Q_CC_DIAB)
185# define KLF_FUNC_NAME (klfShortFuncSignature(__PRETTY_FUNCTION__).data())
186# elif defined(_MSC_VER)
189# define KLF_FUNC_NAME __func__
191# define KLF_FUNC_NAME (klfShortFuncSignature(__FUNCSIG__).data())
194# define KLF_FUNC_NAME __func__
201#define KLF_ASSERT_CONDITION(expr, msg, failaction) \
202 klfDbgSt("KLF_ASSERT_CONDITION(" #expr ")") ; \
207#define KLF_ASSERT_CONDITION_ELSE(expr, msg, failaction) \
208 KLF_ASSERT_CONDITION(expr, msg, failaction) \
210#define KLF_ASSERT_NOT_NULL(ptr, msg, failaction) \
211 KLF_ASSERT_CONDITION((ptr) != NULL, msg, failaction)
KLFDebugBlock(const QString &blockName)
KLFDebugBlockTimer(const QString &blockName)
void registerObjectRefInfo(QObject *object, const QString &refInfo)
void debugObjectDestroyed(QObject *object)
static KLFDebugObjectWatcher * getWatcher()
void debugObjectDestroyedFromSender()
KLF_EXPORT QByteArray klfShortFuncSignature(const QByteArray &fullFuncName)
KLF_EXPORT QDebug __klf_warning_hdr(QDebug warnstr, const char *funcname, const char *shorttime)
KLF_EXPORT QString klfTimeOfDay(bool shortFmt=true)
KLF_EXPORT QDebug __klf_dbg_hdr(QDebug dbg, const char *funcname, const char *refinstance, const char *shorttime)
Base declarations for klatexformula and some utilities.