ソースを参照

sokol_app.h: SOKOL_API_DECL and SOKOL_API_IMPL macros

Andre Weissflog 7 年 前
コミット
a909f1910d
2 ファイル変更47 行追加38 行削除
  1. 45 36
      sokol_app.h
  2. 2 2
      sokol_gfx.h

+ 45 - 36
sokol_app.h

@@ -14,6 +14,8 @@
     SOKOL_UNREACHABLE() - a guard macro for unreachable code (default: assert(false))
     SOKOL_ABORT()       - called after an unrecoverable error (default: abort())
     SOKOL_WIN32_FORCE_MAIN  - define this on Win32 to use a main() entry point instead of WinMain
+    SOKOL_API_DECL      - public function declaration prefix (default: extern)
+    SOKOL_API_IMPL      - public function implementation (default: -)
 
     Optionally define the following to force debug checks and validations
     even in release mode:
@@ -327,6 +329,10 @@
 #include <stdint.h>
 #include <stdbool.h>
 
+#ifndef SOKOL_API_DECL
+    #define SOKOL_API_DECL extern
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -554,30 +560,30 @@ typedef struct {
 extern sapp_desc sokol_main(int argc, char* argv[]);
 
 /* sokol_app API functions */
-extern bool sapp_isvalid(void);
-extern int sapp_width(void);
-extern int sapp_height(void);
-extern bool sapp_high_dpi(void);
-extern float sapp_dpi_scale(void);
-extern void sapp_show_keyboard(bool visible);
-extern bool sapp_keyboard_shown(void);
+SOKOL_API_DECL bool sapp_isvalid(void);
+SOKOL_API_DECL int sapp_width(void);
+SOKOL_API_DECL int sapp_height(void);
+SOKOL_API_DECL bool sapp_high_dpi(void);
+SOKOL_API_DECL float sapp_dpi_scale(void);
+SOKOL_API_DECL void sapp_show_keyboard(bool visible);
+SOKOL_API_DECL bool sapp_keyboard_shown(void);
 
 /* GL/GLES specific functions */
-extern bool sapp_gles2(void);
+SOKOL_API_DECL bool sapp_gles2(void);
 
 /* OSX/Metal specific functions */
-extern const void* sapp_metal_get_device(void);
-extern const void* sapp_metal_get_renderpass_descriptor(void);
-extern const void* sapp_metal_get_drawable(void); 
-extern const void* sapp_macos_get_window(void);
-extern const void* sapp_ios_get_window(void);
+SOKOL_API_DECL const void* sapp_metal_get_device(void);
+SOKOL_API_DECL const void* sapp_metal_get_renderpass_descriptor(void);
+SOKOL_API_DECL const void* sapp_metal_get_drawable(void); 
+SOKOL_API_DECL const void* sapp_macos_get_window(void);
+SOKOL_API_DECL const void* sapp_ios_get_window(void);
 
 /* Win32/D3D11 specific functions */
-extern const void* sapp_d3d11_get_device(void);
-extern const void* sapp_d3d11_get_device_context(void);
-extern const void* sapp_d3d11_get_render_target_view(void);
-extern const void* sapp_d3d11_get_depth_stencil_view(void);
-extern const void* sapp_win32_get_hwnd(void);
+SOKOL_API_DECL const void* sapp_d3d11_get_device(void);
+SOKOL_API_DECL const void* sapp_d3d11_get_device_context(void);
+SOKOL_API_DECL const void* sapp_d3d11_get_render_target_view(void);
+SOKOL_API_DECL const void* sapp_d3d11_get_depth_stencil_view(void);
+SOKOL_API_DECL const void* sapp_win32_get_hwnd(void);
 
 #ifdef __cplusplus
 } /* extern "C" */
@@ -632,6 +638,9 @@ extern const void* sapp_win32_get_hwnd(void);
 #error "sokol_app.h: Unknown platform"
 #endif
 
+#ifndef SOKOL_API_IMPL
+    #define SOKOL_API_IMPL
+#endif
 #ifndef SOKOL_DEBUG
     #ifdef _DEBUG
         #define SOKOL_DEBUG (1)
@@ -5660,31 +5669,31 @@ int main(int argc, char* argv[]) {
 #endif /* LINUX */
 
 /*== PUBLIC API FUNCTIONS ====================================================*/
-bool sapp_isvalid(void) {
+SOKOL_API_IMPL bool sapp_isvalid(void) {
     return _sapp.valid;
 }
 
-int sapp_width(void) {
+SOKOL_API_IMPL int sapp_width(void) {
     return (_sapp.framebuffer_width > 0) ? _sapp.framebuffer_width : 1;
 }
 
-int sapp_height(void) {
+SOKOL_API_IMPL int sapp_height(void) {
     return (_sapp.framebuffer_height > 0) ? _sapp.framebuffer_height : 1;
 }
 
-bool sapp_high_dpi(void) {
+SOKOL_API_IMPL bool sapp_high_dpi(void) {
     return _sapp.desc.high_dpi && (_sapp.dpi_scale > 1.5f);
 }
 
-float sapp_dpi_scale(void) {
+SOKOL_API_IMPL float sapp_dpi_scale(void) {
     return _sapp.dpi_scale;
 }
 
-bool sapp_gles2(void) {
+SOKOL_API_IMPL bool sapp_gles2(void) {
     return _sapp.gles2_fallback;
 }
 
-void sapp_show_keyboard(bool shown) {
+SOKOL_API_IMPL void sapp_show_keyboard(bool shown) {
     #if TARGET_OS_IPHONE
     _sapp_ios_show_keyboard(shown);
     #elif __EMSCRIPTEN__
@@ -5694,11 +5703,11 @@ void sapp_show_keyboard(bool shown) {
     #endif
 }
 
-bool sapp_keyboard_shown(void) {
+SOKOL_API_IMPL bool sapp_keyboard_shown(void) {
     return _sapp.onscreen_keyboard_shown;
 }
 
-const void* sapp_metal_get_device(void) {
+SOKOL_API_IMPL const void* sapp_metal_get_device(void) {
     SOKOL_ASSERT(_sapp.valid);
     #if defined(SOKOL_METAL)
         const void* obj = (__bridge const void*) _sapp_mtl_device_obj;
@@ -5709,7 +5718,7 @@ const void* sapp_metal_get_device(void) {
     #endif
 }
 
-const void* sapp_metal_get_renderpass_descriptor(void) {
+SOKOL_API_IMPL const void* sapp_metal_get_renderpass_descriptor(void) {
     SOKOL_ASSERT(_sapp.valid);
     #if defined(SOKOL_METAL)
         const void* obj =  (__bridge const void*) [_sapp_view_obj currentRenderPassDescriptor];
@@ -5720,7 +5729,7 @@ const void* sapp_metal_get_renderpass_descriptor(void) {
     #endif
 }
 
-const void* sapp_metal_get_drawable(void) {
+SOKOL_API_IMPL const void* sapp_metal_get_drawable(void) {
     SOKOL_ASSERT(_sapp.valid);
     #if defined(SOKOL_METAL)
         const void* obj = (__bridge const void*) [_sapp_view_obj currentDrawable];
@@ -5731,7 +5740,7 @@ const void* sapp_metal_get_drawable(void) {
     #endif
 }
 
-const void* sapp_macos_get_window(void) {
+SOKOL_API_IMPL const void* sapp_macos_get_window(void) {
     #if defined(__APPLE__) && !TARGET_OS_IPHONE
         const void* obj = (__bridge const void*) _sapp_macos_window_obj;
         SOKOL_ASSERT(obj);
@@ -5741,7 +5750,7 @@ const void* sapp_macos_get_window(void) {
     #endif
 }
 
-const void* sapp_ios_get_window(void) {
+SOKOL_API_IMPL const void* sapp_ios_get_window(void) {
     #if defined(__APPLE__) && TARGET_OS_IPHONE
         const void* obj = (__bridge const void*) _sapp_ios_window_obj;
         SOKOL_ASSERT(obj);
@@ -5752,7 +5761,7 @@ const void* sapp_ios_get_window(void) {
 
 }
 
-const void* sapp_d3d11_get_device(void) {
+SOKOL_API_IMPL const void* sapp_d3d11_get_device(void) {
     SOKOL_ASSERT(_sapp.valid);
     #if defined(SOKOL_D3D11)
         return _sapp_d3d11_device;
@@ -5761,7 +5770,7 @@ const void* sapp_d3d11_get_device(void) {
     #endif
 }
 
-const void* sapp_d3d11_get_device_context(void) {
+SOKOL_API_IMPL const void* sapp_d3d11_get_device_context(void) {
     SOKOL_ASSERT(_sapp.valid);
     #if defined(SOKOL_D3D11)
         return _sapp_d3d11_device_context;
@@ -5770,7 +5779,7 @@ const void* sapp_d3d11_get_device_context(void) {
     #endif
 }
 
-const void* sapp_d3d11_get_render_target_view(void) {
+SOKOL_API_IMPL const void* sapp_d3d11_get_render_target_view(void) {
     SOKOL_ASSERT(_sapp.valid);
     #if defined(SOKOL_D3D11)
         return _sapp_d3d11_rtv;
@@ -5779,7 +5788,7 @@ const void* sapp_d3d11_get_render_target_view(void) {
     #endif
 }
 
-const void* sapp_d3d11_get_depth_stencil_view(void) {
+SOKOL_API_IMPL const void* sapp_d3d11_get_depth_stencil_view(void) {
     SOKOL_ASSERT(_sapp.valid);
     #if defined(SOKOL_D3D11)
         return _sapp_d3d11_dsv;
@@ -5788,7 +5797,7 @@ const void* sapp_d3d11_get_depth_stencil_view(void) {
     #endif
 }
 
-const void* sapp_win32_get_hwnd(void) {
+SOKOL_API_IMPL const void* sapp_win32_get_hwnd(void) {
     SOKOL_ASSERT(_sapp.valid);
     #if defined(_WIN32)
         return _sapp_win32_hwnd;

+ 2 - 2
sokol_gfx.h

@@ -315,7 +315,7 @@
 #include <stdbool.h>
 
 #ifndef SOKOL_API_DECL
-#define SOKOL_API_DECL extern
+    #define SOKOL_API_DECL extern
 #endif
 
 #ifdef __cplusplus
@@ -1561,7 +1561,7 @@ SOKOL_API_DECL void sg_discard_context(sg_context ctx_id);
 #endif
 
 #ifndef SOKOL_API_IMPL
-#define SOKOL_API_IMPL
+    #define SOKOL_API_IMPL
 #endif
 #ifndef SOKOL_DEBUG
     #ifdef _DEBUG