summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-09-10 20:11:45 -0400
committerDavid Robillard <d@drobilla.net>2021-09-10 20:54:28 -0400
commit1f8c8118f2d42f495dbe6e3adb2a95c87a92e8e0 (patch)
tree917f42d6b9dae4884330e950d8beb3d115ce4bd5
parentf522f8e480e8ef95ecb5e597ff3a22700d9ac9cf (diff)
downloadzix-1f8c8118f2d42f495dbe6e3adb2a95c87a92e8e0.tar.gz
zix-1f8c8118f2d42f495dbe6e3adb2a95c87a92e8e0.tar.bz2
zix-1f8c8118f2d42f495dbe6e3adb2a95c87a92e8e0.zip
Move attribute definitions to a separate header
-rw-r--r--benchmark/dict_bench.c1
-rw-r--r--benchmark/tree_bench.c1
-rw-r--r--include/zix/attributes.h81
-rw-r--r--include/zix/bitset.h2
-rw-r--r--include/zix/btree.h1
-rw-r--r--include/zix/common.h52
-rw-r--r--include/zix/digest.h2
-rw-r--r--include/zix/hash.h1
-rw-r--r--include/zix/ring.h2
-rw-r--r--include/zix/tree.h1
-rw-r--r--test/bitset_test.c2
-rw-r--r--test/hash_test.c1
-rw-r--r--test/ring_test.c2
-rw-r--r--test/sem_test.c1
-rw-r--r--test/test_malloc.h2
-rw-r--r--test/tree_test.c1
16 files changed, 95 insertions, 58 deletions
diff --git a/benchmark/dict_bench.c b/benchmark/dict_bench.c
index 62c1283..e1583f3 100644
--- a/benchmark/dict_bench.c
+++ b/benchmark/dict_bench.c
@@ -17,6 +17,7 @@
#include "bench.h"
#include "warnings.h"
+#include "zix/attributes.h"
#include "zix/common.h"
#include "zix/digest.h"
#include "zix/hash.h"
diff --git a/benchmark/tree_bench.c b/benchmark/tree_bench.c
index 1be6767..72f1926 100644
--- a/benchmark/tree_bench.c
+++ b/benchmark/tree_bench.c
@@ -19,6 +19,7 @@
#include "../test/test_data.h"
+#include "zix/attributes.h"
#include "zix/btree.h"
#include "zix/common.h"
#include "zix/tree.h"
diff --git a/include/zix/attributes.h b/include/zix/attributes.h
new file mode 100644
index 0000000..c8f77c4
--- /dev/null
+++ b/include/zix/attributes.h
@@ -0,0 +1,81 @@
+/*
+ Copyright 2021 David Robillard <d@drobilla.net>
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef ZIX_ATTRIBUTES_H
+#define ZIX_ATTRIBUTES_H
+
+/**
+ @addtogroup zix
+ @{
+*/
+
+// ZIX_API must be used to decorate things in the public API
+#ifndef ZIX_API
+# if defined(_WIN32) && !defined(ZIX_STATIC) && defined(ZIX_INTERNAL)
+# define ZIX_API __declspec(dllexport)
+# elif defined(_WIN32) && !defined(ZIX_STATIC)
+# define ZIX_API __declspec(dllimport)
+# elif defined(__GNUC__)
+# define ZIX_API __attribute__((visibility("default")))
+# else
+# define ZIX_API
+# endif
+#endif
+
+// GCC pure/const/malloc attributes
+#ifdef __GNUC__
+# define ZIX_PURE_FUNC __attribute__((pure))
+# define ZIX_CONST_FUNC __attribute__((const))
+# define ZIX_MALLOC_FUNC __attribute__((malloc))
+#else
+# define ZIX_PURE_FUNC
+# define ZIX_CONST_FUNC
+# define ZIX_MALLOC_FUNC
+#endif
+
+#define ZIX_PURE_API \
+ ZIX_API \
+ ZIX_PURE_FUNC
+
+#define ZIX_CONST_API \
+ ZIX_API \
+ ZIX_CONST_FUNC
+
+#define ZIX_MALLOC_API \
+ ZIX_API \
+ ZIX_MALLOC_FUNC
+
+// Printf-like format functions
+#ifdef __GNUC__
+# define ZIX_LOG_FUNC(fmt, arg1) __attribute__((format(printf, fmt, arg1)))
+#else
+# define ZIX_LOG_FUNC(fmt, arg1)
+#endif
+
+// Unused parameter macro to suppresses warnings and make it impossible to use
+#if defined(__cplusplus)
+# define ZIX_UNUSED(name)
+#elif defined(__GNUC__)
+# define ZIX_UNUSED(name) name##_unused __attribute__((__unused__))
+#else
+# define ZIX_UNUSED(name) name
+#endif
+
+/**
+ @}
+*/
+
+#endif /* ZIX_ATTRIBUTES_H */
diff --git a/include/zix/bitset.h b/include/zix/bitset.h
index 07f133f..ee8b805 100644
--- a/include/zix/bitset.h
+++ b/include/zix/bitset.h
@@ -17,7 +17,7 @@
#ifndef ZIX_BITSET_H
#define ZIX_BITSET_H
-#include "zix/common.h"
+#include "zix/attributes.h"
#include <limits.h>
#include <stdbool.h>
diff --git a/include/zix/btree.h b/include/zix/btree.h
index 07de8c3..e2a5f26 100644
--- a/include/zix/btree.h
+++ b/include/zix/btree.h
@@ -17,6 +17,7 @@
#ifndef ZIX_BTREE_H
#define ZIX_BTREE_H
+#include "zix/attributes.h"
#include "zix/common.h"
#include <stdbool.h>
diff --git a/include/zix/common.h b/include/zix/common.h
index f43fcde..cfadb65 100644
--- a/include/zix/common.h
+++ b/include/zix/common.h
@@ -24,62 +24,10 @@
@{
*/
-/** @cond */
-#ifndef ZIX_API
-# if defined(_WIN32) && !defined(ZIX_STATIC) && defined(ZIX_INTERNAL)
-# define ZIX_API __declspec(dllexport)
-# elif defined(_WIN32) && !defined(ZIX_STATIC)
-# define ZIX_API __declspec(dllimport)
-# elif defined(__GNUC__)
-# define ZIX_API __attribute__((visibility("default")))
-# else
-# define ZIX_API
-# endif
-#endif
-
-#ifdef __GNUC__
-# define ZIX_PURE_FUNC __attribute__((pure))
-# define ZIX_CONST_FUNC __attribute__((const))
-# define ZIX_MALLOC_FUNC __attribute__((malloc))
-#else
-# define ZIX_PURE_FUNC
-# define ZIX_CONST_FUNC
-# define ZIX_MALLOC_FUNC
-#endif
-
-#define ZIX_PURE_API \
- ZIX_API \
- ZIX_PURE_FUNC
-
-#define ZIX_CONST_API \
- ZIX_API \
- ZIX_CONST_FUNC
-
-#define ZIX_MALLOC_API \
- ZIX_API \
- ZIX_MALLOC_FUNC
-
-/** @endcond */
-
#ifdef __cplusplus
extern "C" {
#endif
-#ifdef __GNUC__
-# define ZIX_LOG_FUNC(fmt, arg1) __attribute__((format(printf, fmt, arg1)))
-#else
-# define ZIX_LOG_FUNC(fmt, arg1)
-#endif
-
-// Unused parameter macro to suppresses warnings and make it impossible to use
-#if defined(__cplusplus)
-# define ZIX_UNUSED(name)
-#elif defined(__GNUC__)
-# define ZIX_UNUSED(name) name##_unused __attribute__((__unused__))
-#else
-# define ZIX_UNUSED(name) name
-#endif
-
typedef enum {
ZIX_STATUS_SUCCESS,
ZIX_STATUS_ERROR,
diff --git a/include/zix/digest.h b/include/zix/digest.h
index 6df7002..139a0bd 100644
--- a/include/zix/digest.h
+++ b/include/zix/digest.h
@@ -17,7 +17,7 @@
#ifndef ZIX_DIGEST_H
#define ZIX_DIGEST_H
-#include "zix/common.h"
+#include "zix/attributes.h"
#include <stddef.h>
#include <stdint.h>
diff --git a/include/zix/hash.h b/include/zix/hash.h
index f08d267..27fb39d 100644
--- a/include/zix/hash.h
+++ b/include/zix/hash.h
@@ -17,6 +17,7 @@
#ifndef ZIX_HASH_H
#define ZIX_HASH_H
+#include "zix/attributes.h"
#include "zix/common.h"
#include <stdbool.h>
diff --git a/include/zix/ring.h b/include/zix/ring.h
index 2650f07..69803bf 100644
--- a/include/zix/ring.h
+++ b/include/zix/ring.h
@@ -17,7 +17,7 @@
#ifndef ZIX_RING_H
#define ZIX_RING_H
-#include "zix/common.h"
+#include "zix/attributes.h"
#include <stdint.h>
diff --git a/include/zix/tree.h b/include/zix/tree.h
index e0daa80..a6822e1 100644
--- a/include/zix/tree.h
+++ b/include/zix/tree.h
@@ -17,6 +17,7 @@
#ifndef ZIX_TREE_H
#define ZIX_TREE_H
+#include "zix/attributes.h"
#include "zix/common.h"
#include <stdbool.h>
diff --git a/test/bitset_test.c b/test/bitset_test.c
index 27f1d2d..c0833e7 100644
--- a/test/bitset_test.c
+++ b/test/bitset_test.c
@@ -14,8 +14,8 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include "zix/attributes.h"
#include "zix/bitset.h"
-#include "zix/common.h"
#include <inttypes.h>
#include <stdarg.h>
diff --git a/test/hash_test.c b/test/hash_test.c
index 68556b0..834c391 100644
--- a/test/hash_test.c
+++ b/test/hash_test.c
@@ -22,6 +22,7 @@
#include "test_data.h"
#include "test_malloc.h"
+#include "zix/attributes.h"
#include "zix/common.h"
#include "zix/digest.h"
#include "zix/hash.h"
diff --git a/test/ring_test.c b/test/ring_test.c
index c11d998..49cf4f0 100644
--- a/test/ring_test.c
+++ b/test/ring_test.c
@@ -14,7 +14,7 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#include "zix/common.h"
+#include "zix/attributes.h"
#include "zix/ring.h"
#include "zix/thread.h"
diff --git a/test/sem_test.c b/test/sem_test.c
index 9a25e66..a5f6d2e 100644
--- a/test/sem_test.c
+++ b/test/sem_test.c
@@ -14,6 +14,7 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include "zix/attributes.h"
#include "zix/sem.h"
#include "zix/thread.h"
diff --git a/test/test_malloc.h b/test/test_malloc.h
index 0d64e46..fdd2098 100644
--- a/test/test_malloc.h
+++ b/test/test_malloc.h
@@ -14,7 +14,7 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#include "zix/common.h"
+#include "zix/attributes.h"
#include <stddef.h>
diff --git a/test/tree_test.c b/test/tree_test.c
index 434d4d7..76c247d 100644
--- a/test/tree_test.c
+++ b/test/tree_test.c
@@ -16,6 +16,7 @@
#include "test_data.h"
+#include "zix/attributes.h"
#include "zix/common.h"
#include "zix/tree.h"