icinga2/lib/base/debug.hpp

25 lines
658 B
C++
Raw Permalink Normal View History

/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2013-08-28 02:18:58 -04:00
#ifndef DEBUG_H
#define DEBUG_H
2014-05-25 10:23:35 -04:00
#include "i2-base.hpp"
2013-08-28 02:18:58 -04:00
2014-12-19 06:19:28 -05:00
#ifndef I2_DEBUG
2013-08-29 03:04:33 -04:00
# define ASSERT(expr) ((void)0)
2014-12-19 06:19:28 -05:00
#else /* I2_DEBUG */
# define ASSERT(expr) ((expr) ? void(0) : icinga_assert_fail(#expr, __FILE__, __LINE__))
2014-12-19 06:19:28 -05:00
#endif /* I2_DEBUG */
2013-08-28 02:18:58 -04:00
#define VERIFY(expr) ((expr) ? void(0) : icinga_assert_fail(#expr, __FILE__, __LINE__))
2013-08-28 02:18:58 -04:00
#define ABORT(expr) icinga_assert_fail(#expr, __FILE__, __LINE__)
2013-10-26 03:41:45 -04:00
[[noreturn]] inline void icinga_assert_fail(const char *expr, const char *file, int line) noexcept(true)
2013-08-28 02:18:58 -04:00
{
fprintf(stderr, "%s:%d: assertion failed: %s\n", file, line, expr);
std::abort();
2013-08-28 02:18:58 -04:00
}
#endif /* DEBUG_H */