1
0
Fork 0
mirror of https://github.com/tailix/libkernaux.git synced 2025-06-02 18:21:48 -04:00

Conditional asserts as public API

This commit is contained in:
Alex Kotov 2021-12-18 04:43:19 +05:00
parent ac31273c8d
commit ecba475c06
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
7 changed files with 58 additions and 64 deletions

View file

@ -5,8 +5,25 @@
extern "C" {
#endif
#define kernaux_assert(cond) \
#ifdef KERNAUX_ENABLE_ASSERT
#define KERNAUX_ASSERT(cond) \
((cond) ? (void)0 : kernaux_assert_do(__FILE__, __LINE__, #cond))
#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
void kernaux_assert_do(const char *file, int line, const char *str);