@ -194,6 +194,7 @@ void _err_flush_stdout();
# define CRASH_BAD_INDEX(m_index, m_size) \
if ( unlikely ( ( m_index ) < 0 | | ( m_index ) > = ( m_size ) ) ) { \
_err_print_index_error ( FUNCTION_STR , __FILE__ , __LINE__ , m_index , m_size , _STR ( m_index ) , _STR ( m_size ) , " " , true ) ; \
_err_flush_stdout ( ) ; \
GENERATE_TRAP ( ) ; \
} else \
( ( void ) 0 )
@ -208,6 +209,7 @@ void _err_flush_stdout();
# define CRASH_BAD_INDEX_MSG(m_index, m_size, m_msg) \
if ( unlikely ( ( m_index ) < 0 | | ( m_index ) > = ( m_size ) ) ) { \
_err_print_index_error ( FUNCTION_STR , __FILE__ , __LINE__ , m_index , m_size , _STR ( m_index ) , _STR ( m_size ) , m_msg , true ) ; \
_err_flush_stdout ( ) ; \
GENERATE_TRAP ( ) ; \
} else \
( ( void ) 0 )
@ -296,6 +298,7 @@ void _err_flush_stdout();
# define CRASH_BAD_UNSIGNED_INDEX(m_index, m_size) \
if ( unlikely ( ( m_index ) > = ( m_size ) ) ) { \
_err_print_index_error ( FUNCTION_STR , __FILE__ , __LINE__ , m_index , m_size , _STR ( m_index ) , _STR ( m_size ) , " " , true ) ; \
_err_flush_stdout ( ) ; \
GENERATE_TRAP ( ) ; \
} else \
( ( void ) 0 )
@ -310,6 +313,7 @@ void _err_flush_stdout();
# define CRASH_BAD_UNSIGNED_INDEX_MSG(m_index, m_size, m_msg) \
if ( unlikely ( ( m_index ) > = ( m_size ) ) ) { \
_err_print_index_error ( FUNCTION_STR , __FILE__ , __LINE__ , m_index , m_size , _STR ( m_index ) , _STR ( m_size ) , m_msg , true ) ; \
_err_flush_stdout ( ) ; \
GENERATE_TRAP ( ) ; \
} else \
( ( void ) 0 )
@ -559,6 +563,7 @@ void _err_flush_stdout();
# define CRASH_COND(m_cond) \
if ( unlikely ( m_cond ) ) { \
_err_print_error ( FUNCTION_STR , __FILE__ , __LINE__ , " FATAL: Condition \" " _STR ( m_cond ) " \" is true. " ) ; \
_err_flush_stdout ( ) ; \
GENERATE_TRAP ( ) ; \
} else \
( ( void ) 0 )
@ -573,6 +578,7 @@ void _err_flush_stdout();
# define CRASH_COND_MSG(m_cond, m_msg) \
if ( unlikely ( m_cond ) ) { \
_err_print_error ( FUNCTION_STR , __FILE__ , __LINE__ , " FATAL: Condition \" " _STR ( m_cond ) " \" is true. " , m_msg ) ; \
_err_flush_stdout ( ) ; \
GENERATE_TRAP ( ) ; \
} else \
( ( void ) 0 )
@ -808,4 +814,20 @@ void _err_flush_stdout();
} else \
( ( void ) 0 )
/**
* This should be a ' free ' assert for program flow and should not be needed in any releases ,
* only used in dev builds .
*/
# ifdef DEV_ENABLED
# define DEV_ASSERT(m_cond) \
if ( unlikely ( ! ( m_cond ) ) ) { \
_err_print_error ( FUNCTION_STR , __FILE__ , __LINE__ , " FATAL: DEV_ASSERT failed \" " _STR ( m_cond ) " \" is false. " ) ; \
_err_flush_stdout ( ) ; \
GENERATE_TRAP ( ) ; \
} else \
( ( void ) 0 )
# else
# define DEV_ASSERT(m_cond)
# endif
# endif // ERROR_MACROS_H