[waffle] [PATCH 6/8] waffle: move WAFFLE_API out of the API header
Emil Velikov
emil.l.velikov at gmail.com
Sat May 24 15:51:33 PDT 2014
WAFFLE_API is used to define the symbol visibility and
all functions provided by the API must be non-hidden.
Thus the define should be used internally in conjunction
with the compiler used in order to properly annotate the
symbols.
Resolves #12: https://github.com/waffle-gl/waffle/issues/12
Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
---
include/waffle/waffle.h | 74 +++++++++++++++----------------------
src/waffle/api/api_priv.h | 14 +++++++
src/waffle/api/waffle_attrib_list.c | 10 +++--
src/waffle/api/waffle_config.c | 6 +--
src/waffle/api/waffle_context.c | 6 +--
src/waffle/api/waffle_display.c | 8 ++--
src/waffle/api/waffle_dl.c | 4 +-
src/waffle/api/waffle_enum.c | 4 +-
src/waffle/api/waffle_error.c | 8 ++--
src/waffle/api/waffle_gl_misc.c | 6 +--
src/waffle/api/waffle_init.c | 2 +-
src/waffle/api/waffle_window.c | 12 +++---
12 files changed, 80 insertions(+), 74 deletions(-)
diff --git a/include/waffle/waffle.h b/include/waffle/waffle.h
index b5477f5..d43ddcf 100644
--- a/include/waffle/waffle.h
+++ b/include/waffle/waffle.h
@@ -36,20 +36,6 @@
extern "C" {
#endif
-// WAFFLE_API - Declare that a symbol is in Waffle's public API.
-//
-// See "GCC Wiki - Visibility". (http://gcc.gnu.org/wiki/Visibility).
-// See "How to Write Shared Libraries. Ulrich Drepper.
-// (http://www.akkadia.org/drepper/dsohowto.pdf).
-//
-// TODO: Implement WAFFLE_API for Apple.
-//
-#if defined(__GNUC__) && __GNUC__ >= 4
-# define WAFFLE_API __attribute__ ((visibility("default")))
-#else
-# define WAFFLE_API
-#endif
-
#if __STDC_VERSION__ < 199901L
# define restrict
#endif
@@ -89,13 +75,13 @@ struct waffle_error_info {
size_t message_length;
};
-WAFFLE_API enum waffle_error
+enum waffle_error
waffle_error_get_code(void);
-WAFFLE_API const struct waffle_error_info*
+const struct waffle_error_info*
waffle_error_get_info(void);
-WAFFLE_API const char*
+const char*
waffle_error_to_string(enum waffle_error e);
// ---------------------------------------------------------------------------
@@ -169,23 +155,23 @@ enum waffle_enum {
WAFFLE_DL_OPENGL_ES3 = 0x0304,
};
-WAFFLE_API const char*
+const char*
waffle_enum_to_string(int32_t e);
// ---------------------------------------------------------------------------
-WAFFLE_API bool
+bool
waffle_init(const int32_t *attrib_list);
-WAFFLE_API bool
+bool
waffle_make_current(struct waffle_display *dpy,
struct waffle_window *window,
struct waffle_context *ctx);
-WAFFLE_API void*
+void*
waffle_get_proc_address(const char *name);
-WAFFLE_API bool
+bool
waffle_is_extension_in_string(const char *restrict extension_string,
const char *restrict extension_name);
@@ -193,71 +179,71 @@ waffle_is_extension_in_string(const char *restrict extension_string,
// waffle_display
// ---------------------------------------------------------------------------
-WAFFLE_API struct waffle_display*
+struct waffle_display*
waffle_display_connect(const char *name);
-WAFFLE_API bool
+bool
waffle_display_disconnect(struct waffle_display *self);
-WAFFLE_API bool
+bool
waffle_display_supports_context_api(struct waffle_display *self,
int32_t context_api);
-WAFFLE_API union waffle_native_display*
+union waffle_native_display*
waffle_display_get_native(struct waffle_display *self);
// ---------------------------------------------------------------------------
// waffle_config
// ---------------------------------------------------------------------------
-WAFFLE_API struct waffle_config*
+struct waffle_config*
waffle_config_choose(struct waffle_display *dpy,
const int32_t attrib_list[]);
-WAFFLE_API bool
+bool
waffle_config_destroy(struct waffle_config *self);
-WAFFLE_API union waffle_native_config*
+union waffle_native_config*
waffle_config_get_native(struct waffle_config *self);
// ---------------------------------------------------------------------------
// waffle_context
// ---------------------------------------------------------------------------
-WAFFLE_API struct waffle_context*
+struct waffle_context*
waffle_context_create(struct waffle_config *config,
struct waffle_context *shared_ctx);
-WAFFLE_API bool
+bool
waffle_context_destroy(struct waffle_context *self);
-WAFFLE_API union waffle_native_context*
+union waffle_native_context*
waffle_context_get_native(struct waffle_context *self);
// ---------------------------------------------------------------------------
// waffle_window
// ---------------------------------------------------------------------------
-WAFFLE_API struct waffle_window*
+struct waffle_window*
waffle_window_create(
struct waffle_config *config,
int32_t width,
int32_t height);
-WAFFLE_API bool
+bool
waffle_window_destroy(struct waffle_window *self);
-WAFFLE_API bool
+bool
waffle_window_show(struct waffle_window *self);
-WAFFLE_API bool
+bool
waffle_window_swap_buffers(struct waffle_window *self);
-WAFFLE_API union waffle_native_window*
+union waffle_native_window*
waffle_window_get_native(struct waffle_window *self);
#if defined(WAFFLE_API_EXPERIMENTAL) && WAFFLE_API_VERSION >= 0x0103
-WAFFLE_API bool
+bool
waffle_window_resize(
struct waffle_window *self,
int32_t width,
@@ -268,10 +254,10 @@ waffle_window_resize(
// waffle_dl
// ---------------------------------------------------------------------------
-WAFFLE_API bool
+bool
waffle_dl_can_open(int32_t dl);
-WAFFLE_API void*
+void*
waffle_dl_sym(int32_t dl, const char *name);
// ---------------------------------------------------------------------------
@@ -327,23 +313,23 @@ union waffle_native_window {
// waffle_attrib_list
// ---------------------------------------------------------------------------
-WAFFLE_API int32_t
+int32_t
waffle_attrib_list_length(const int32_t attrib_list[]);
-WAFFLE_API bool
+bool
waffle_attrib_list_get(
const int32_t attrib_list[],
int32_t key,
int32_t *value);
-WAFFLE_API bool
+bool
waffle_attrib_list_get_with_default(
const int32_t attrib_list[],
int32_t key,
int32_t *value,
int32_t default_value);
-WAFFLE_API bool
+bool
waffle_attrib_list_update(
int32_t *attrib_list,
int32_t key,
diff --git a/src/waffle/api/api_priv.h b/src/waffle/api/api_priv.h
index b8f177b..0bbeada 100644
--- a/src/waffle/api/api_priv.h
+++ b/src/waffle/api/api_priv.h
@@ -30,6 +30,20 @@
#include "waffle.h"
+// WAFFLE_API - Declare that a symbol is in Waffle's public API.
+//
+// See "GCC Wiki - Visibility". (http://gcc.gnu.org/wiki/Visibility).
+// See "How to Write Shared Libraries. Ulrich Drepper.
+// (http://www.akkadia.org/drepper/dsohowto.pdf).
+//
+// TODO: Implement WAFFLE_API for Apple.
+//
+#if defined(__GNUC__) && __GNUC__ >= 4
+# define WAFFLE_API __attribute__ ((visibility("default")))
+#else
+# define WAFFLE_API
+#endif
+
struct api_object;
struct wcore_platform;
diff --git a/src/waffle/api/waffle_attrib_list.c b/src/waffle/api/waffle_attrib_list.c
index d8d2f4b..94327bb 100644
--- a/src/waffle/api/waffle_attrib_list.c
+++ b/src/waffle/api/waffle_attrib_list.c
@@ -23,10 +23,12 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#include "api_priv.h"
+
#include "wcore_attrib_list.h"
#include "wcore_error.h"
-int32_t
+WAFFLE_API int32_t
waffle_attrib_list_length(const int32_t attrib_list[])
{
@@ -34,7 +36,7 @@ waffle_attrib_list_length(const int32_t attrib_list[])
return wcore_attrib_list_length(attrib_list);
}
-bool
+WAFFLE_API bool
waffle_attrib_list_get(
const int32_t *attrib_list,
int32_t key,
@@ -44,7 +46,7 @@ waffle_attrib_list_get(
return wcore_attrib_list_get(attrib_list, key, value);
}
-bool
+WAFFLE_API bool
waffle_attrib_list_get_with_default(
const int32_t attrib_list[],
int32_t key,
@@ -56,7 +58,7 @@ waffle_attrib_list_get_with_default(
default_value);
}
-bool
+WAFFLE_API bool
waffle_attrib_list_update(
int32_t *attrib_list,
int32_t key,
diff --git a/src/waffle/api/waffle_config.c b/src/waffle/api/waffle_config.c
index a2ef941..107f07d 100644
--- a/src/waffle/api/waffle_config.c
+++ b/src/waffle/api/waffle_config.c
@@ -31,7 +31,7 @@
#include "wcore_error.h"
#include "wcore_platform.h"
-struct waffle_config*
+WAFFLE_API struct waffle_config*
waffle_config_choose(
struct waffle_display *dpy,
const int32_t attrib_list[])
@@ -59,7 +59,7 @@ waffle_config_choose(
return &wc_self->wfl;
}
-bool
+WAFFLE_API bool
waffle_config_destroy(struct waffle_config *self)
{
struct wcore_config *wc_self = wcore_config(self);
@@ -74,7 +74,7 @@ waffle_config_destroy(struct waffle_config *self)
return api_platform->vtbl->config.destroy(wc_self);
}
-union waffle_native_config*
+WAFFLE_API union waffle_native_config*
waffle_config_get_native(struct waffle_config *self)
{
struct wcore_config *wc_self = wcore_config(self);
diff --git a/src/waffle/api/waffle_context.c b/src/waffle/api/waffle_context.c
index 026c484..b246a63 100644
--- a/src/waffle/api/waffle_context.c
+++ b/src/waffle/api/waffle_context.c
@@ -29,7 +29,7 @@
#include "wcore_error.h"
#include "wcore_platform.h"
-struct waffle_context*
+WAFFLE_API struct waffle_context*
waffle_context_create(
struct waffle_config *config,
struct waffle_context *shared_ctx)
@@ -57,7 +57,7 @@ waffle_context_create(
return &wc_self->wfl;
}
-bool
+WAFFLE_API bool
waffle_context_destroy(struct waffle_context *self)
{
struct wcore_context *wc_self = wcore_context(self);
@@ -72,7 +72,7 @@ waffle_context_destroy(struct waffle_context *self)
return api_platform->vtbl->context.destroy(wc_self);
}
-union waffle_native_context*
+WAFFLE_API union waffle_native_context*
waffle_context_get_native(struct waffle_context *self)
{
struct wcore_context *wc_self = wcore_context(self);
diff --git a/src/waffle/api/waffle_display.c b/src/waffle/api/waffle_display.c
index fb24e44..9d741e9 100644
--- a/src/waffle/api/waffle_display.c
+++ b/src/waffle/api/waffle_display.c
@@ -30,7 +30,7 @@
#include "wcore_platform.h"
#include "wcore_util.h"
-struct waffle_display*
+WAFFLE_API struct waffle_display*
waffle_display_connect(const char *name)
{
struct wcore_display *wc_self;
@@ -45,7 +45,7 @@ waffle_display_connect(const char *name)
return &wc_self->wfl;
}
-bool
+WAFFLE_API bool
waffle_display_disconnect(struct waffle_display *self)
{
struct wcore_display *wc_self = wcore_display(self);
@@ -60,7 +60,7 @@ waffle_display_disconnect(struct waffle_display *self)
return api_platform->vtbl->display.destroy(wc_self);
}
-bool
+WAFFLE_API bool
waffle_display_supports_context_api(
struct waffle_display *self,
int32_t context_api)
@@ -90,7 +90,7 @@ waffle_display_supports_context_api(
context_api);
}
-union waffle_native_display*
+WAFFLE_API union waffle_native_display*
waffle_display_get_native(struct waffle_display *self)
{
struct wcore_display *wc_self = wcore_display(self);
diff --git a/src/waffle/api/waffle_dl.c b/src/waffle/api/waffle_dl.c
index 7465cfa..b94c4c7 100644
--- a/src/waffle/api/waffle_dl.c
+++ b/src/waffle/api/waffle_dl.c
@@ -43,7 +43,7 @@ waffle_dl_check_enum(int32_t dl)
}
}
-bool
+WAFFLE_API bool
waffle_dl_can_open(int32_t dl)
{
if (!api_check_entry(NULL, 0))
@@ -55,7 +55,7 @@ waffle_dl_can_open(int32_t dl)
return api_platform->vtbl->dl_can_open(api_platform, dl);
}
-void*
+WAFFLE_API void*
waffle_dl_sym(int32_t dl, const char *name)
{
if (!api_check_entry(NULL, 0))
diff --git a/src/waffle/api/waffle_enum.c b/src/waffle/api/waffle_enum.c
index dd0c84e..1b8dfbb 100644
--- a/src/waffle/api/waffle_enum.c
+++ b/src/waffle/api/waffle_enum.c
@@ -23,10 +23,12 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#include "api_priv.h"
+
#include "wcore_error.h"
#include "wcore_util.h"
-const char*
+WAFFLE_API const char*
waffle_enum_to_string(int32_t e)
{
wcore_error_reset();
diff --git a/src/waffle/api/waffle_error.c b/src/waffle/api/waffle_error.c
index be265f3..f6ec45c 100644
--- a/src/waffle/api/waffle_error.c
+++ b/src/waffle/api/waffle_error.c
@@ -25,21 +25,23 @@
#include <string.h>
+#include "api_priv.h"
+
#include "wcore_error.h"
-enum waffle_error
+WAFFLE_API enum waffle_error
waffle_error_get_code(void)
{
return wcore_error_get_code();
}
-const struct waffle_error_info*
+WAFFLE_API const struct waffle_error_info*
waffle_error_get_info(void)
{
return wcore_error_get_info();
}
-const char*
+WAFFLE_API const char*
waffle_error_to_string(enum waffle_error e)
{
switch (e) {
diff --git a/src/waffle/api/waffle_gl_misc.c b/src/waffle/api/waffle_gl_misc.c
index eabe3ee..f94b34b 100644
--- a/src/waffle/api/waffle_gl_misc.c
+++ b/src/waffle/api/waffle_gl_misc.c
@@ -34,7 +34,7 @@
#include "wcore_platform.h"
#include "wcore_window.h"
-bool
+WAFFLE_API bool
waffle_is_extension_in_string(
const char *restrict extension_string,
const char *restrict extension_name)
@@ -71,7 +71,7 @@ waffle_is_extension_in_string(
}
}
-bool
+WAFFLE_API bool
waffle_make_current(
struct waffle_display *dpy,
struct waffle_window *window,
@@ -99,7 +99,7 @@ waffle_make_current(
wc_ctx);
}
-void*
+WAFFLE_API void*
waffle_get_proc_address(const char *name)
{
if (!api_check_entry(NULL, 0))
diff --git a/src/waffle/api/waffle_init.c b/src/waffle/api/waffle_init.c
index b58fe9a..b45c3ba 100644
--- a/src/waffle/api/waffle_init.c
+++ b/src/waffle/api/waffle_init.c
@@ -159,7 +159,7 @@ waffle_init_create_platform(int32_t waffle_platform)
}
}
-bool
+WAFFLE_API bool
waffle_init(const int32_t *attrib_list)
{
bool ok = true;
diff --git a/src/waffle/api/waffle_window.c b/src/waffle/api/waffle_window.c
index 7e5e1ea..1dbf823 100644
--- a/src/waffle/api/waffle_window.c
+++ b/src/waffle/api/waffle_window.c
@@ -32,7 +32,7 @@
#include "wcore_platform.h"
#include "wcore_window.h"
-struct waffle_window*
+WAFFLE_API struct waffle_window*
waffle_window_create(
struct waffle_config *config,
int width, int height)
@@ -57,7 +57,7 @@ waffle_window_create(
return &wc_self->wfl;
}
-bool
+WAFFLE_API bool
waffle_window_destroy(struct waffle_window *self)
{
struct wcore_window *wc_self = wcore_window(self);
@@ -72,7 +72,7 @@ waffle_window_destroy(struct waffle_window *self)
return api_platform->vtbl->window.destroy(wc_self);
}
-bool
+WAFFLE_API bool
waffle_window_show(struct waffle_window *self)
{
struct wcore_window *wc_self = wcore_window(self);
@@ -87,7 +87,7 @@ waffle_window_show(struct waffle_window *self)
return api_platform->vtbl->window.show(wc_self);
}
-bool
+WAFFLE_API bool
waffle_window_resize(
struct waffle_window *self,
int32_t width,
@@ -111,7 +111,7 @@ waffle_window_resize(
}
}
-bool
+WAFFLE_API bool
waffle_window_swap_buffers(struct waffle_window *self)
{
struct wcore_window *wc_self = wcore_window(self);
@@ -126,7 +126,7 @@ waffle_window_swap_buffers(struct waffle_window *self)
return api_platform->vtbl->window.swap_buffers(wc_self);
}
-union waffle_native_window*
+WAFFLE_API union waffle_native_window*
waffle_window_get_native(struct waffle_window *self)
{
struct wcore_window *wc_self = wcore_window(self);
--
1.9.3
More information about the waffle
mailing list