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)
Utility to time the execution of a block.
An extension of KLFDebugBlock with millisecond-time display.
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.