summaryrefslogtreecommitdiff
path: root/src/compiler.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler.h')
-rw-r--r--src/compiler.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/compiler.h b/src/compiler.h
new file mode 100644
index 0000000..6a5ce4a
--- /dev/null
+++ b/src/compiler.h
@@ -0,0 +1,42 @@
+/**
+ * \file compiler.h
+ * Part of common.h, defines macros for hints to the compiler.
+ */
+
+#ifndef COMPILER_H
+#define COMPILER_H
+
+#if HAVE___ATTRIBUTE__
+# define MALLOC __attribute__((malloc))
+# define NONULL __attribute__((nonnull))
+# define NONULL_ARGS(...) __attribute__((nonnull (__VA_ARGS__)))
+# define PRINTF(_n,_m) __attribute__((format (printf, (_n), (_m))))
+# define UNUSED __attribute__((unused))
+#else
+# warning Less compile time checks as compiler is unsupported
+/**
+ * Mark a function as always returning a new unique pointer or NULL
+ */
+# define MALLOC
+/**
+ * Mark a function as not taking NULL to any of its pointer parameters
+ */
+# define NONULL
+/**
+ * Mark a function as not taking NULL to the given list of pointer parameters.
+ * The list of parameters is 1 based.
+ */
+# define NONULL_ARGS(...)
+/**
+ * Mark a function as taking printf format style parameter.
+ * @param _n the 1 based index of the format parameter
+ * @param _m the 1 based index of the first variable list parameter
+ */
+# define PRINTF(_n,_m)
+/**
+ * Mark a function paramter as being unused
+ */
+# define UNUSED
+#endif
+
+#endif /* COMPILER_H */