summaryrefslogtreecommitdiff
path: root/src/common/sanity.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/sanity.h')
-rw-r--r--src/common/sanity.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/common/sanity.h b/src/common/sanity.h
new file mode 100644
index 0000000..168671f
--- /dev/null
+++ b/src/common/sanity.h
@@ -0,0 +1,36 @@
+/// return wrappers for unexpected NULL pointers
+#ifndef SANITY_H
+#define SANITY_H
+# if __STDC_VERSION__ < 199901L
+# error "Please compile in C99 mode"
+# endif
+# if __GNUC__ < 3
+// I don't specifically know what version this requires,
+// but GCC 3 was the beginning of modern GCC
+# error "Please upgrade your compiler to at least GCC 3"
+# endif
+# ifndef __i386__
+// Known platform dependencies:
+// endianness for the [RW]FIFO.* macros
+// possibly, some signal-handling
+# error "Unsupported platform"
+# endif
+# ifdef __x86_64__
+// I'm working on it - I know there are some pointer-size assumptions.
+# error "Sorry, this code is believed not to be 64-bit safe"
+# error "please compile with -m32"
+# endif
+
+/// A name for unused function arguments - can be repeated
+# define UNUSED UNUSED_IMPL(__COUNTER__)
+// Don't you just love the hoops the preprocessor makes you go through?
+# define UNUSED_IMPL(arg) UNUSED_IMPL2(arg)
+# define UNUSED_IMPL2(suffix) unused_ ## suffix __attribute__((unused))
+/// Convert conditions to use the bool type
+# include <stdbool.h>
+/// Convert type assumptions to use the standard types here
+# include <stdint.h>
+/// size_t, NULL
+# include <stddef.h>
+
+#endif // SANITY_H