diff options
author | David Robillard <d@drobilla.net> | 2022-12-19 20:26:13 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2023-12-02 18:49:07 -0500 |
commit | 3d79b6ee36b250644e6cf70eee8e3076d94cbb7f (patch) | |
tree | 0f734bfcfd278d6eef5ca0e82c008b7f2a6f7bba /include/serd/attributes.h | |
parent | 7fb4c5264b91d5a5ce9f13a9fb4308088b31fcd4 (diff) | |
download | serd-3d79b6ee36b250644e6cf70eee8e3076d94cbb7f.tar.gz serd-3d79b6ee36b250644e6cf70eee8e3076d94cbb7f.tar.bz2 serd-3d79b6ee36b250644e6cf70eee8e3076d94cbb7f.zip |
Use Zix attributes directly
Diffstat (limited to 'include/serd/attributes.h')
-rw-r--r-- | include/serd/attributes.h | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/include/serd/attributes.h b/include/serd/attributes.h index 59063153..4ea4d41d 100644 --- a/include/serd/attributes.h +++ b/include/serd/attributes.h @@ -4,6 +4,8 @@ #ifndef SERD_ATTRIBUTES_H #define SERD_ATTRIBUTES_H +#include "zix/attributes.h" + /** @defgroup serd_attributes Attributes @ingroup serd_library @@ -43,41 +45,28 @@ // GCC function attributes #ifdef __GNUC__ -# define SERD_ALWAYS_INLINE_FUNC __attribute__((always_inline)) -# define SERD_CONST_FUNC __attribute__((const)) -# define SERD_LOG_FUNC(fmt, arg1) __attribute__((format(printf, fmt, arg1))) -# define SERD_MALLOC_FUNC __attribute__((malloc)) # define SERD_NODISCARD __attribute__((warn_unused_result)) -# define SERD_PURE_FUNC __attribute__((pure)) #else -# define SERD_ALWAYS_INLINE_FUNC ///< Should absolutely always be inlined -# define SERD_CONST_FUNC ///< Only reads its parameters -# define SERD_LOG_FUNC(fmt, arg1) ///< Has printf-like parameters -# define SERD_MALLOC_FUNC ///< Allocates memory -# define SERD_NODISCARD ///< Returns a value that must be used -# define SERD_PURE_FUNC ///< Only reads memory +# define SERD_NODISCARD ///< Returns a value that must be used #endif -// Clang nullability annotations -#if defined(__clang__) && __clang_major__ >= 7 -# define SERD_NONNULL _Nonnull -# define SERD_NULLABLE _Nullable -# define SERD_ALLOCATED _Null_unspecified +// GCC print format attributes +#if defined(__MINGW32__) +# define SERD_LOG_FUNC(fmt, a0) __attribute__((format(gnu_printf, fmt, a0))) +#elif defined(__GNUC__) +# define SERD_LOG_FUNC(fmt, a0) __attribute__((format(printf, fmt, a0))) #else -# define SERD_NONNULL ///< A non-null pointer -# define SERD_NULLABLE ///< A nullable pointer -# define SERD_ALLOCATED ///< An allocated (possibly null) pointer -# define SERD_UNSPECIFIED ///< A pointer with unspecified nullability +# define SERD_LOG_FUNC(fmt, a0) ///< Has printf-like parameters #endif /// A pure function in the public API that only reads memory -#define SERD_PURE_API SERD_API SERD_PURE_FUNC +#define SERD_PURE_API SERD_API ZIX_PURE_FUNC /// A const function in the public API that is pure and only reads parameters -#define SERD_CONST_API SERD_API SERD_CONST_FUNC +#define SERD_CONST_API SERD_API ZIX_CONST_FUNC /// A malloc function in the public API that returns allocated memory -#define SERD_MALLOC_API SERD_API SERD_MALLOC_FUNC +#define SERD_MALLOC_API SERD_API ZIX_MALLOC_FUNC /** @} |