Lumino (C API)
LNCommon.h
1 
2 #pragma once
3 
4 //------------------------------------------------------------------------------
5 // Flags
6 
7 // UNICODE 使用フラグ
8 #if defined (UNICODE) || defined(_UNICODE)
9  #define LN_UNICODE
10 #else
11  #define LN_MBS
12 #endif
13 
14 // DLL
15 #if defined(LN_BUILD_DLL)
16  #define LN_API __declspec(dllexport)
17 #else
18  #define LN_API
19 #endif
20 
21 
22 //------------------------------------------------------------------------------
23 // typedef
24 
25 #include <stdint.h>
26 typedef intptr_t LNHandle;
27 typedef void* LNUserData;
28 
29 #ifdef LN_UNICODE
30  typedef wchar_t LNChar;
31  #define __T(x) L ## x
32 #else
33  typedef char LNChar;
34  #define __T(x) x
35 #endif
36 
37 #define _T(x) __T(x)
38 
39 //------------------------------------------------------------------------------
40 // C_API
41 
42 // デフォルト引数定義の細工
43 #ifdef LN_DOXYGEN
44  #define LN_DEFAULT_ARG(x)
45 #else
46  #ifdef __cplusplus
47  // C++ ビルド時はデフォルト引数を有効にする
48  #define LN_DEFAULT_ARG(x) =x
49  #else
50  // C ビルド時は無効にする
51  #define LN_DEFAULT_ARG(x)
52  #endif
53 #endif
54 
55 #define LN_MODULE(x)
56 #define LN_MODULE_END
57 #define LN_CLASS(className, ...) LN_API void className##_SetBindingTypeInfo(void* data);
58 #define LN_STATIC_CLASS(x)
59 #define LN_STRUCT_CLASS(x)
60 #define LN_EXTENSION_CLASS(x)
61 #define LN_CLASS_END
62 
63 #define LN_INSTANCE_API LN_API
64 #define LN_INTERNAL_API LN_API
65 #define LN_STATIC_API LN_API
66 
67 #define LN_ATTR_LIBRARY_INITIALIZER
68 #define LN_ATTR_LIBRARY_TERMINATOR
69 #define LN_ATTR_CONSTRUCTOR
70 #define LN_ATTR_PROPERTY
71 #define LN_ATTR_EVENT
72 #define LN_ATTR_OVERLOAD(ownerFunc)
73 //#define LN_ATTR_STRUCT_CONSTRUCTOR
74 
75 #define LN_HANDLE(x) LNHandle
76 #define LN_OUT