debug: respecte NDEBUG for CHECK macros
This commit is contained in:
parent
fad44bd1f7
commit
657a407d0e
41
debug.hpp
41
debug.hpp
@ -24,12 +24,10 @@
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#ifdef ENABLE_DEBUGGING
|
||||
#define DEBUG_ONLY(X) do { \
|
||||
X \
|
||||
} while (0)
|
||||
#if !defined(NDEBUG)
|
||||
#define _DEBUG_ONLY(X) do { X } while (0)
|
||||
#else
|
||||
#define DEBUG_ONLY(X)
|
||||
#define _DEBUG_ONLY(X) do { } while (0)
|
||||
#endif
|
||||
|
||||
|
||||
@ -41,14 +39,14 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define TRACE { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
std::cerr << __FILE__ << ":" << __func__ << ":" << __LINE__ << std::endl; \
|
||||
); \
|
||||
}
|
||||
|
||||
|
||||
#define WARN(C) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
if (C) { \
|
||||
std::cerr << __FILE__ << ":" << __func__ << ":" << __LINE__ << ", " << #C << std::endl; \
|
||||
} \
|
||||
@ -66,7 +64,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK(C) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
if (!(C)) \
|
||||
panic (#C); \
|
||||
); \
|
||||
@ -75,7 +73,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_SANITY(A) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
if (!util::debug::is_valid (__a)) { \
|
||||
_CHECK_PANIC("failed sanity test for %s, %!\n", #A, __a); \
|
||||
@ -86,7 +84,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_EQ(A,B) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
const auto &__b = (B); \
|
||||
\
|
||||
@ -103,7 +101,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_LT(A,B) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
const auto &__b = (B); \
|
||||
\
|
||||
@ -120,7 +118,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_LE(A,B) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
const auto &__b = (B); \
|
||||
\
|
||||
@ -137,7 +135,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_GT(A,B) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
const auto &__b = (B); \
|
||||
\
|
||||
@ -154,7 +152,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_GE(A,B) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
const auto &__b = (B); \
|
||||
\
|
||||
@ -171,7 +169,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_LIMIT(V,L,H) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__v = (V); \
|
||||
const auto &__l = (L); \
|
||||
const auto &__h = (H); \
|
||||
@ -190,7 +188,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_NEQ(A,B) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
const auto &__b = (B); \
|
||||
\
|
||||
@ -207,7 +205,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_ZERO(A) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
\
|
||||
if (!util::almost_zero (__a)) { \
|
||||
@ -221,7 +219,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_NEZ(A) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
if (util::exactly_zero (__a)) \
|
||||
_CHECK_PANIC ("expected zero\n" \
|
||||
@ -233,7 +231,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_MOD(V,M) do { \
|
||||
DEBUG_ONLY ( \
|
||||
_DEBUG_ONLY ( \
|
||||
const auto &__check_mod_v = (V); \
|
||||
const auto &__check_mod_m = (M); \
|
||||
if (!util::exactly_zero (__check_mod_v % __check_mod_m)) \
|
||||
@ -268,7 +266,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_THROWS(E,C) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
bool caught = false; \
|
||||
\
|
||||
try \
|
||||
@ -284,7 +282,7 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#define CHECK_NOTHROW(C) do { \
|
||||
DEBUG_ONLY( \
|
||||
_DEBUG_ONLY( \
|
||||
try { \
|
||||
C; \
|
||||
} catch (const std::exception &e) { \
|
||||
@ -395,6 +393,7 @@ namespace util { namespace debug {
|
||||
|
||||
#include "./debug.ipp"
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// XXX: maths needs to be included so that CHECK_EQ/NEQ can call almost_equal,
|
||||
// but maths.hpp might be using CHECK_ macros so we must include maths.hpp
|
||||
|
2
m4/nc
2
m4/nc
@ -1 +1 @@
|
||||
Subproject commit ab01cbf966c2f0a09e7740db56f50827afe284ac
|
||||
Subproject commit 006f69779160a490786399b1af6a7d1e251cd15c
|
Loading…
Reference in New Issue
Block a user