diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/pugl/attributes.h | 59 | ||||
-rw-r--r-- | include/pugl/pugl.h | 48 |
2 files changed, 61 insertions, 46 deletions
diff --git a/include/pugl/attributes.h b/include/pugl/attributes.h new file mode 100644 index 0000000..75322ee --- /dev/null +++ b/include/pugl/attributes.h @@ -0,0 +1,59 @@ +// Copyright 2012-2022 David Robillard <d@drobilla.net> +// SPDX-License-Identifier: ISC + +#ifndef PUGL_ATTRIBUTES_H +#define PUGL_ATTRIBUTES_H + +// Public declaration scope +#ifdef __cplusplus +# define PUGL_BEGIN_DECLS extern "C" { +# define PUGL_END_DECLS } +#else +# define PUGL_BEGIN_DECLS ///< Begin public API definitions +# define PUGL_END_DECLS ///< End public API definitions +#endif + +// Symbol exposed in the public API +#ifndef PUGL_API +# if defined(_WIN32) && !defined(PUGL_STATIC) && defined(PUGL_INTERNAL) +# define PUGL_API __declspec(dllexport) +# elif defined(_WIN32) && !defined(PUGL_STATIC) +# define PUGL_API __declspec(dllimport) +# elif defined(__GNUC__) +# define PUGL_API __attribute__((visibility("default"))) +# else +# define PUGL_API +# endif +#endif + +// Deprecated API +#ifndef PUGL_DISABLE_DEPRECATED +# if defined(__clang__) +# define PUGL_DEPRECATED_BY(rep) __attribute__((deprecated("", rep))) +# elif defined(__GNUC__) +# define PUGL_DEPRECATED_BY(rep) __attribute__((deprecated("Use " rep))) +# else +# define PUGL_DEPRECATED_BY(rep) +# endif +#endif + +// GCC function attributes +#if defined(__GNUC__) +# define PUGL_CONST_FUNC __attribute__((const)) +# define PUGL_MALLOC_FUNC __attribute__((malloc)) +#else +# define PUGL_CONST_FUNC ///< Only reads its parameters +# define PUGL_MALLOC_FUNC ///< Allocates memory +#endif + +/// A const function in the public API that only reads parameters +#define PUGL_CONST_API \ + PUGL_API \ + PUGL_CONST_FUNC + +/// A malloc function in the public API that returns allocated memory +#define PUGL_MALLOC_API \ + PUGL_API \ + PUGL_MALLOC_FUNC + +#endif // PUGL_ATTRIBUTES_H diff --git a/include/pugl/pugl.h b/include/pugl/pugl.h index 62284e6..981d76d 100644 --- a/include/pugl/pugl.h +++ b/include/pugl/pugl.h @@ -4,6 +4,8 @@ #ifndef PUGL_PUGL_H #define PUGL_PUGL_H +#include "pugl/attributes.h" + #include <stddef.h> #include <stdint.h> @@ -11,52 +13,6 @@ # include <stdbool.h> #endif -#ifndef PUGL_API -# if defined(_WIN32) && !defined(PUGL_STATIC) && defined(PUGL_INTERNAL) -# define PUGL_API __declspec(dllexport) -# elif defined(_WIN32) && !defined(PUGL_STATIC) -# define PUGL_API __declspec(dllimport) -# elif defined(__GNUC__) -# define PUGL_API __attribute__((visibility("default"))) -# else -# define PUGL_API -# endif -#endif - -#ifndef PUGL_DISABLE_DEPRECATED -# if defined(__clang__) -# define PUGL_DEPRECATED_BY(rep) __attribute__((deprecated("", rep))) -# elif defined(__GNUC__) -# define PUGL_DEPRECATED_BY(rep) __attribute__((deprecated("Use " rep))) -# else -# define PUGL_DEPRECATED_BY(rep) -# endif -#endif - -#if defined(__GNUC__) -# define PUGL_CONST_FUNC __attribute__((const)) -# define PUGL_MALLOC_FUNC __attribute__((malloc)) -#else -# define PUGL_CONST_FUNC -# define PUGL_MALLOC_FUNC -#endif - -#define PUGL_CONST_API \ - PUGL_API \ - PUGL_CONST_FUNC - -#define PUGL_MALLOC_API \ - PUGL_API \ - PUGL_MALLOC_FUNC - -#ifdef __cplusplus -# define PUGL_BEGIN_DECLS extern "C" { -# define PUGL_END_DECLS } -#else -# define PUGL_BEGIN_DECLS -# define PUGL_END_DECLS -#endif - PUGL_BEGIN_DECLS /** |