26#include <cx/platform/cpp.h>
27#include <cx/utils/macros/salieri.h>
53 _In_opt_z_
const char* file,
int ln);
66_no_inline
bool _cxAssertFail(_In_opt_z_
const char* expr, _In_opt_z_
const char* msg,
67 _In_z_
const char* file,
int ln);
69_no_inline
bool _cxAssertFail(_In_opt_z_
const char* expr, _In_opt_z_
const char* msg);
73#define dbgAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
74#define dbgAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
75#define dbgVerify(expr) (!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
76#define dbgVerifyMsg(expr, msg) (!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
85#define dbgAssert(expr) unused_noeval(expr)
93#define dbgAssertMsg(expr, msg) unused_noeval(expr)
102#define dbgVerify(expr) (!!(expr))
111#define dbgVerifyMsg(expr, msg) (!!(expr))
115#define devAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
116#define devAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
117#define devVerify(expr) (!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
118#define devVerifyMsg(expr, msg) (!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
119#define relAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL, __FILE__, __LINE__))
120#define relAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg, __FILE__, __LINE__))
121#define devFatalError(msg) _cxAssertFail(NULL, msg, __FILE__, __LINE__)
122#define relFatalError(msg) _cxAssertFail(NULL, msg, __FILE__, __LINE__)
123#elif defined(DIAGNOSTIC)
124#define devAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL))
125#define devAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg))
126#define devVerify(expr) (!!(expr) || _cxAssertFail(#expr, NULL))
127#define devVerifyMsg(expr, msg) (!!(expr) || _cxAssertFail(#expr, msg))
128#define relAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL))
129#define relAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg))
130#define devFatalError(msg) _cxAssertFail(NULL, msg)
131#define relFatalError(msg) _cxAssertFail(NULL, msg)
140#define devAssert(expr) unused_noeval(expr)
148#define devAssertMsg(expr, msg) unused_noeval(expr)
156#define devVerify(expr) (!!(expr))
165#define devVerifyMsg(expr, msg) (!!(expr))
173#define relAssert(expr) (void)(!!(expr) || _cxAssertFail(#expr, NULL))
181#define relAssertMsg(expr, msg) (void)(!!(expr) || _cxAssertFail(#expr, msg))
189#define devFatalError(msg) ((void)0)
197#define relFatalError(msg) _cxAssertFail(NULL, msg)
200#if defined(DEBUG_LEGACY_ASSERT) && !defined(__INTELLISENSE__)
201#define assert(expr) relAssert(expr)
Compiler and platform detection macros.
ASSERT_ACTION_ENUM
Action to take when an assertion fails.
int(* dbgAssertCallback)(const char *expr, const char *msg, const char *file, int ln)
void dbgAssertRemoveCallback(dbgAssertCallback cb)
void dbgAssertAddCallback(dbgAssertCallback cb)
@ ASSERT_Crash
Intentionally crash to invoke crash handler or get memory dump.
@ ASSERT_Ignore
Ignore the failure and continue execution.
@ ASSERT_Exit
Immediately terminate the process with exit(1)
Macros for suppressing compiler warnings.