aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/macros.h27
1 files changed, 27 insertions, 0 deletions
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 <stddef.h>
+# endif
+#endif
+
+#endif /* !AHOY_COMMON_MACROS_H */