From 15e93b55266186c159688e3b54bead26da206ee2 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Tue, 13 Feb 2024 17:21:56 +0100 Subject: Make unreachable() useful when debugging, and move common macros --- src/common/macros.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/common/macros.h (limited to 'src/common') diff --git a/src/common/macros.h b/src/common/macros.h new file mode 100644 index 0000000..6daf08f --- /dev/null +++ b/src/common/macros.h @@ -0,0 +1,27 @@ +#ifndef AHOY_COMMON_MACROS_H +#define AHOY_COMMON_MACROS_H + +#define MIN(x, y) ((x) < (y) ? (x) : (y)) +#define MAX(x, y) ((x) > (y) ? (x) : (y)) + +#define lengthof(a) (sizeof(a) / sizeof(*(a))) +#define memeq(x, y, n) (!memcmp(x, y, n)) +#define streq(x, y) (!strcmp(x, y)) +#define u8eq(x, y) (!u8cmp(x, y)) + +#if DEBUG || !defined(unreachable) +# if DEBUG +# include "cerr.h" +# ifdef unreachable +# undef unreachable +# endif +# define unreachable() \ + diex("%s:%d: hit unreachable in %s()", __FILE__, __LINE__, __func__) +# elifdef __clang__ +# define unreachable() __builtin_unreachable() +# else +# include +# endif +#endif + +#endif /* !AHOY_COMMON_MACROS_H */ -- cgit v1.2.3