libkernaux/include/kernaux/assert.h

29 lines
1.1 KiB
C
Raw Normal View History

2021-12-14 20:37:11 +00:00
#ifndef KERNAUX_INCLUDED_ASSERT
2021-12-20 06:17:53 +00:00
#define KERNAUX_INCLUDED_ASSERT
2021-12-14 20:37:11 +00:00
#ifdef __cplusplus
extern "C" {
#endif
2022-01-20 16:51:54 +00:00
#define KERNAUX_PANIC(msg) (kernaux_assert_do(__FILE__, __LINE__, #msg))
2022-01-24 17:09:17 +00:00
#define KERNAUX_ASSERT(cond) ((cond) ? (void)0 : KERNAUX_PANIC(cond))
2021-12-17 23:43:19 +00:00
2022-01-23 10:42:06 +00:00
#define KERNAUX_PANIC_RETURN(msg) do { KERNAUX_PANIC(msg); return; } while (0)
#define KERNAUX_PANIC_RETVAL(msg, val) do { KERNAUX_PANIC(msg); return (val); } while (0)
2022-01-23 10:42:06 +00:00
#define KERNAUX_ASSERT_RETURN(cond) do { KERNAUX_ASSERT(cond); if (!(cond)) return; } while (0)
#define KERNAUX_ASSERT_RETVAL(cond, val) do { KERNAUX_ASSERT(cond); if (!(cond)) return (val); } while (0)
2021-12-20 02:22:43 +00:00
2022-01-23 10:42:06 +00:00
#define KERNAUX_NOTNULL_RETURN(cond) do { KERNAUX_ASSERT(cond); if (!(cond)) return; } while (0)
#define KERNAUX_NOTNULL_RETVAL(cond, val) do { KERNAUX_ASSERT(cond); if (!(cond)) return (val); } while (0)
2022-01-20 17:18:18 +00:00
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