From 244991dee7a2e274cb361f5040dd39b0f2997290 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 30 Apr 2016 02:03:32 +0300 Subject: Extend assert reporting functions with condition text and call stack. --- src/utils/checkutils.cpp | 20 +++++++++++++------- src/utils/checkutils.h | 28 +++++++++++++++++----------- 2 files changed, 30 insertions(+), 18 deletions(-) (limited to 'src/utils') diff --git a/src/utils/checkutils.cpp b/src/utils/checkutils.cpp index 2fc471d7e..6cc3c751e 100644 --- a/src/utils/checkutils.cpp +++ b/src/utils/checkutils.cpp @@ -30,19 +30,25 @@ #include "debug.h" -bool reportFalseReal(const bool val, const char *const file, - const unsigned line) +bool reportFalseReal(const bool val, + const char *const text, + const char *const file, + const unsigned line, + const char *const func) { if (!val) - logger->log("Debug: false value at %s:%u", file, line); + reportStack(file, line, func, "Detected false value", text); return val; } -bool reportTrueReal(const bool val, const char *const file, - const unsigned line) +bool reportTrueReal(const bool val, + const char *const text, + const char *const file, + const unsigned line, + const char *const func) { if (val) - logger->log("Debug: true value at %s:%u", file, line); + reportStack(file, line, func, "Detected true value", text); return val; } @@ -61,7 +67,7 @@ void reportStack(const char *const file, logger->log("--- %s --------------------------------------------", name); - logger->log("%s:%u: '%s' in function `%s'", + logger->assert("%s:%u: '%s' in function `%s'", file, line, text, diff --git a/src/utils/checkutils.h b/src/utils/checkutils.h index 21f439743..539614a7a 100644 --- a/src/utils/checkutils.h +++ b/src/utils/checkutils.h @@ -23,17 +23,23 @@ #ifdef ENABLE_ASSERTS -#define reportFalse(val) reportFalse1(val, __FILE__, __LINE__) -#define reportFalse1(val, file, line) reportFalseReal(val, file, line) - -#define reportTrue(val) reportTrue1(val, __FILE__, __LINE__) -#define reportTrue1(val, file, line) reportTrueReal(val, file, line) - -bool reportFalseReal(const bool val, const char *const file, - const unsigned line); - -bool reportTrueReal(const bool val, const char *const file, - const unsigned line); +#define reportFalse(val) \ + reportFalseReal(val, #val, __FILE__, __LINE__, __func__) + +#define reportTrue(val) \ + reportTrueReal(val, #val, __FILE__, __LINE__, __func__) + +bool reportFalseReal(const bool val, + const char *const text, + const char *const file, + const unsigned line, + const char *const func); + +bool reportTrueReal(const bool val, + const char *const text, + const char *const file, + const unsigned line, + const char *const func); void reportStack(const char *const file, const unsigned int line, -- cgit v1.2.3-60-g2f50