From 0f9981cf5a15de92d24a2ff1580b6e832cbd5cb1 Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Sun, 19 May 2024 15:24:39 +0200 Subject: Add any_check.h --- any_check.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 any_check.h (limited to 'any_check.h') diff --git a/any_check.h b/any_check.h new file mode 100644 index 0000000..5fdc268 --- /dev/null +++ b/any_check.h @@ -0,0 +1,37 @@ +#ifndef ANY_CHECK_INCLUDE +#define ANY_CHECK_INCLUDE + +#ifndef ANY_CHECK_PANIC +#ifdef log_panic +#define ANY_CHECK_PANIC log_panic +#else +#endif +#include +#include +#define ANY_CHECK_PANIC(pred, ...) \ + do { \ + fprintf(stderr, "Check failed at %s:%d: %s\n", __FILE__, __LINE__, pred); \ + abort(); \ + } while (0) +#endif + +#define ANY_CHECK_STRING(...) # __VA_ARGS__ + +#define check_or(pred, ...) \ + do { \ + if (!(pred)) { \ + __VA_ARGS__ ; \ + } \ + } while (0) + +#define check_panic(pred, ...) check_or(pred, ANY_CHECK_PANIC(ANY_CHECK_STRING(pred), __VA_ARGS__) + +#ifdef ANY_CHECK_DEBUG +#define check_debug_or check_or +#define check_debug_panic check_panic +#else +#define check_debug_or(...) +#define check_debug_panic(...) +#endif + +#endif -- cgit v1.2.3