]> git.ozlabs.org Git - ccan/blobdiff - ccan/compiler/compiler.h
compiler: Add PURE_FUNCTION
[ccan] / ccan / compiler / compiler.h
index fcb89c8f2a68a9aa90f5cba4746a98910c0a551d..42245646c42ff772bcc6376ffc54ac79a1c1aca1 100644 (file)
@@ -1,3 +1,4 @@
+/* CC0 (Public domain) - see LICENSE file for details */
 #ifndef CCAN_COMPILER_H
 #define CCAN_COMPILER_H
 #include "config.h"
 #else
 #define CONST_FUNCTION
 #endif
+
+#ifndef PURE_FUNCTION
+#if HAVE_ATTRIBUTE_PURE
+/**
+ * PURE_FUNCTION - a function is pure
+ *
+ * A pure function is one that has no side effects other than it's return value
+ * and uses no inputs other than it's arguments and global variables.
+ */
+#define PURE_FUNCTION __attribute__((__pure__))
+#else
+#define PURE_FUNCTION
+#endif
+#endif
 #endif
 
 #if HAVE_ATTRIBUTE_UNUSED