ScreenTranslator/src/service/debug.h

74 lines
2.0 KiB
C
Raw Normal View History

2020-02-21 00:45:53 +07:00
#pragma once
#include <QDebug>
2020-04-04 00:47:49 +07:00
namespace debug
{
extern std::atomic_bool isTrace;
QString traceFileName();
bool setTraceFileName(const QString& fileName);
}; // namespace debug
2020-02-21 00:45:53 +07:00
#define SOFT_ASSERT(XXX, WORKAROUND) \
if (!(XXX)) { \
qCritical() << "Soft assertion failed at" << __FILE__ << __LINE__ << ":" \
<< #XXX; \
WORKAROUND; \
}
#define ASSERT(XXX) \
if (!(XXX)) { \
qCritical() << "Assertion failed at" << __FILE__ << __LINE__ << ":" \
<< #XXX; \
Q_ASSERT(XXX); \
}
#define ASSERT_X(XXX, CONTEXT) \
if (!(XXX)) { \
qCritical() << "Assertion failed at" << __FILE__ << __LINE__ << ":" \
<< #XXX << "Context (" << #CONTEXT << ")" << CONTEXT; \
Q_ASSERT(XXX); \
}
#define LTRACE() \
if (debug::isTrace) \
qDebug()
#define LTRACE_IF(XXX) \
if (debug::isTrace && XXX) \
qDebug()
#define LDEBUG() qDebug()
#define LDEBUG_IF(XXX) \
if (XXX) \
qDebug()
#define LWARNING() qWarning()
#define LWARNING_IF(XXX) \
if (XXX) \
qWarning()
#define LERROR() qCritical()
#define LERROR_IF(XXX) \
if (XXX) \
qCritical()
#define LINFO() qInfo()
#define LINFO_IF(XXX) \
if (XXX) \
qInfo()
#define LFATAL() qFatal
#define LFATAL_IF(XXX) \
if (XXX) \
qFatal
#define LARG(XXX) #XXX "=" << XXX
#define LARG_N(NAME, XXX) NAME << '=' << XXX