42 #define KLF_SHORT_TIME qPrintable(klfTimeOfDay()) 66 class KLFDebugObjectWatcherPrivate;
74 void registerObjectRefInfo(
QObject *
object,
const QString& refInfo);
77 void debugObjectDestroyed(
QObject *
object);
84 KLFDebugObjectWatcherPrivate *p;
96 __klf_dbg_hdr(
QDebug dbg,
const char * funcname,
const char *refinstance,
const char * shorttime);
99 inline const T& __klf_debug_tee(
const T& expr)
100 { qDebug()<<
"TEE VALUE: "<<expr;
return expr; }
103 inline 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__))) 183 #ifndef KLF_FUNC_NAME 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) 188 # if _MSC_VER <= 1300 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) KLF_EXPORT QDebug __klf_dbg_hdr(QDebug dbg, const char *funcname, const char *refinstance, const char *shorttime)
An extension of KLFDebugBlock with millisecond-time display.
Base declarations for klatexformula and some utilities.
KLF_EXPORT QString klfTimeOfDay(bool shortFmt=true)
Utility to time the execution of a block.
void debugObjectDestroyedFromSender()
KLF_EXPORT QDebug __klf_warning_hdr(QDebug warnstr, const char *funcname, const char *shorttime)
KLF_EXPORT QByteArray klfShortFuncSignature(const QByteArray &fullFuncName)