From 3d79b6ee36b250644e6cf70eee8e3076d94cbb7f Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 19 Dec 2022 20:26:13 -0500 Subject: Use Zix attributes directly --- include/serd/attributes.h | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) (limited to 'include/serd/attributes.h') 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 /** @} -- cgit v1.2.1