2021-12-14 20:37:11 +00:00
|
|
|
#ifndef KERNAUX_INCLUDED_ASSERT
|
|
|
|
#define KERNAUX_INCLUDED_ASSERT 1
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2021-12-17 23:43:19 +00:00
|
|
|
#ifdef KERNAUX_ENABLE_ASSERT
|
|
|
|
#define KERNAUX_ASSERT(cond) \
|
2021-12-14 20:48:35 +00:00
|
|
|
((cond) ? (void)0 : kernaux_assert_do(__FILE__, __LINE__, #cond))
|
2021-12-17 23:43:19 +00:00
|
|
|
#else
|
|
|
|
#define KERNAUX_ASSERT(cond) ((void)sizeof((cond)))
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define KERNAUX_ASSERT_RETURN(cond) \
|
|
|
|
{ KERNAUX_ASSERT(cond); if (!(cond)) return; }
|
|
|
|
#define KERNAUX_ASSERT_RETVAL(cond, val) \
|
|
|
|
{ KERNAUX_ASSERT(cond); if (!(cond)) return (val); }
|
|
|
|
|
|
|
|
#ifdef KERNAUX_ENABLE_NULL_GUARD
|
|
|
|
#define KERNAUX_NOTNULL_RETURN(cond) { KERNAUX_ASSERT_RETURN(cond); }
|
|
|
|
#define KERNAUX_NOTNULL_RETVAL(cond, val) { KERNAUX_ASSERT_RETVAL(cond, val); }
|
|
|
|
#else
|
|
|
|
#define KERNAUX_NOTNULL_RETURN(cond) { KERNAUX_ASSERT(cond); }
|
|
|
|
#define KERNAUX_NOTNULL_RETVAL(cond, val) { KERNAUX_ASSERT(cond); }
|
|
|
|
#endif
|
2021-12-14 20:37:11 +00:00
|
|
|
|
|
|
|
void kernaux_assert_do(const char *file, int line, const char *str);
|
|
|
|
|
|
|
|
extern void (*kernaux_assert_cb)(const char *file, int line, const char *str);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|