CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
Assertions

Macros

#define dbgAssert(expr)   unused_noeval(expr)
 
#define dbgAssertMsg(expr, msg)   unused_noeval(expr)
 
#define dbgVerify(expr)   (!!(expr))
 
#define dbgVerifyMsg(expr, msg)   (!!(expr))
 
#define devAssert(expr)   unused_noeval(expr)
 
#define devAssertMsg(expr, msg)   unused_noeval(expr)
 
#define devVerify(expr)   (!!(expr))
 
#define devVerifyMsg(expr, msg)   (!!(expr))
 
#define relAssert(expr)   (void)(!!(expr) || _cxAssertFail(#expr, NULL))
 
#define relAssertMsg(expr, msg)   (void)(!!(expr) || _cxAssertFail(#expr, msg))
 
#define devFatalError(msg)   ((void)0)
 
#define relFatalError(msg)   _cxAssertFail(NULL, msg)
 

Typedefs

typedef int(* dbgAssertCallback) (const char *expr, const char *msg, const char *file, int ln)
 

Enumerations

enum  ASSERT_ACTION_ENUM { ASSERT_Crash = 0 , ASSERT_Exit , ASSERT_Ignore }
 Action to take when an assertion fails. More...
 

Functions

void dbgAssertAddCallback (dbgAssertCallback cb)
 
void dbgAssertRemoveCallback (dbgAssertCallback cb)
 

Detailed Description

Runtime assertions with configurable failure behavior.

CX provides multiple levels of assertions that compile to different behavior based on DEBUG_LEVEL:

Assertion variants:

All assertion failures trigger registered callbacks before taking action.

Macro Definition Documentation

◆ dbgAssert

#define dbgAssert (   expr)    unused_noeval(expr)

Debug assertion - only active when DEBUG_LEVEL >= 2

void dbgAssert(expr)

Evaluates expression and triggers assertion failure if false. Compiled out completely in dev/release builds.

Parameters
exprExpression to evaluate

Definition at line 83 of file assert.h.

◆ dbgAssertMsg

#define dbgAssertMsg (   expr,
  msg 
)    unused_noeval(expr)

Debug assertion with message - only active when DEBUG_LEVEL >= 2

void dbgAssertMsg(expr, msg)

Like dbgAssert but includes a custom message in the failure report.

Parameters
exprExpression to evaluate
msgString literal message to include on failure

Definition at line 91 of file assert.h.

◆ dbgVerify

#define dbgVerify (   expr)    (!!(expr))

Debug verify - only active when DEBUG_LEVEL >= 2

bool dbgVerify(expr)

Like dbgAssert but returns the boolean result of the expression. Useful when the expression result is needed in the calling code.

Parameters
exprExpression to evaluate
Returns
Boolean result of expression evaluation

Definition at line 100 of file assert.h.

◆ dbgVerifyMsg

#define dbgVerifyMsg (   expr,
  msg 
)    (!!(expr))

Debug verify with message - only active when DEBUG_LEVEL >= 2

bool dbgVerifyMsg(expr, msg)

Like dbgVerify but includes a custom message in the failure report.

Parameters
exprExpression to evaluate
msgString literal message to include on failure
Returns
Boolean result of expression evaluation

Definition at line 109 of file assert.h.

◆ devAssert

#define devAssert (   expr)    unused_noeval(expr)

Development assertion - active when DEBUG_LEVEL >= 1

void devAssert(expr)

Evaluates expression and triggers assertion failure if false. Active in debug and dev builds, compiled out in release builds.

Parameters
exprExpression to evaluate

Definition at line 138 of file assert.h.

◆ devAssertMsg

#define devAssertMsg (   expr,
  msg 
)    unused_noeval(expr)

Development assertion with message - active when DEBUG_LEVEL >= 1

void devAssertMsg(expr, msg)

Like devAssert but includes a custom message in the failure report.

Parameters
exprExpression to evaluate
msgString literal message to include on failure

Definition at line 146 of file assert.h.

◆ devFatalError

#define devFatalError (   msg)    ((void)0)

Development fatal error - active when DEBUG_LEVEL >= 1

void devFatalError(msg)

Immediately triggers assertion failure with a message. Active in debug and dev builds, compiled out in release builds.

Parameters
msgString literal error message

Definition at line 187 of file assert.h.

◆ devVerify

#define devVerify (   expr)    (!!(expr))

Development verify - active when DEBUG_LEVEL >= 1

bool devVerify(expr)

Like devAssert but returns the boolean result of the expression.

Parameters
exprExpression to evaluate
Returns
Boolean result of expression evaluation

Definition at line 154 of file assert.h.

◆ devVerifyMsg

#define devVerifyMsg (   expr,
  msg 
)    (!!(expr))

Development verify with message - active when DEBUG_LEVEL >= 1

bool devVerifyMsg(expr, msg)

Like devVerify but includes a custom message in the failure report.

Parameters
exprExpression to evaluate
msgString literal message to include on failure
Returns
Boolean result of expression evaluation

Definition at line 163 of file assert.h.

◆ relAssert

#define relAssert (   expr)    (void)(!!(expr) || _cxAssertFail(#expr, NULL))

Release assertion - always active

void relAssert(expr)

Evaluates expression and triggers assertion failure if false. Active in all build types. Use sparingly for critical invariants.

Parameters
exprExpression to evaluate

Definition at line 171 of file assert.h.

◆ relAssertMsg

#define relAssertMsg (   expr,
  msg 
)    (void)(!!(expr) || _cxAssertFail(#expr, msg))

Release assertion with message - always active

void relAssertMsg(expr, msg)

Like relAssert but includes a custom message in the failure report.

Parameters
exprExpression to evaluate
msgString literal message to include on failure

Definition at line 179 of file assert.h.

◆ relFatalError

#define relFatalError (   msg)    _cxAssertFail(NULL, msg)

Release fatal error - always active

void relFatalError(msg)

Immediately triggers assertion failure with a message. Active in all build types.

Parameters
msgString literal error message

Definition at line 195 of file assert.h.

Typedef Documentation

◆ dbgAssertCallback

typedef int(* dbgAssertCallback) (const char *expr, const char *msg, const char *file, int ln)

Callback function invoked when an assertion fails

Parameters
exprThe failed expression as a string (may be NULL for FatalError)
msgOptional message provided with the assertion (may be NULL)
fileSource file where assertion failed (NULL in release builds with DEBUG_LEVEL == 0)
lnLine number where assertion failed
Returns
One of the ASSERT_ACTION_ENUM values to control behavior

Callbacks are invoked before the default failure action. If multiple callbacks are registered, they are called in order. If any callback returns ASSERT_Crash or ASSERT_Exit, that action is taken immediately. Otherwise, the last callback's return value determines the action.

Definition at line 50 of file assert.h.

Enumeration Type Documentation

◆ ASSERT_ACTION_ENUM

Action to take when an assertion fails.

Enumerator
ASSERT_Crash 

Intentionally crash to invoke crash handler or get memory dump.

ASSERT_Exit 

Immediately terminate the process with exit(1)

ASSERT_Ignore 

Ignore the failure and continue execution.

Definition at line 32 of file assert.h.

Function Documentation

◆ dbgAssertAddCallback()

void dbgAssertAddCallback ( dbgAssertCallback  cb)

Register a callback to be invoked on assertion failure

Parameters
cbCallback function to add

Callbacks are deduplicated - adding the same callback multiple times has no effect.

◆ dbgAssertRemoveCallback()

void dbgAssertRemoveCallback ( dbgAssertCallback  cb)

Unregister a previously registered assertion callback

Parameters
cbCallback function to remove