2
2
#include < cassert>
3
3
#include " ecsact/runtime/dylib.h"
4
4
5
+ #ifdef ECSACT_ASYNC_API_LOAD_AT_RUNTIME
6
+ # include " ecsact/runtime/async.h"
7
+ #endif
8
+
9
+ #ifdef ECSACT_CORE_API_LOAD_AT_RUNTIME
10
+ # include " ecsact/runtime/core.h"
11
+ #endif
12
+
13
+ #ifdef ECSACT_DYNAMIC_API_LOAD_AT_RUNTIME
14
+ # include " ecsact/runtime/dynamic.h"
15
+ #endif
16
+
5
17
#ifdef ECSACT_META_API_LOAD_AT_RUNTIME
6
18
# include " ecsact/runtime/meta.h"
7
19
#endif
8
20
21
+ #ifdef ECSACT_SERIALIZE_API_LOAD_AT_RUNTIME
22
+ # include " ecsact/runtime/serialize.h"
23
+ #endif
24
+
25
+ #include " ./dylib-util.hh"
26
+
27
+ #ifdef ECSACT_ASYNC_API_LOAD_AT_RUNTIME
28
+ FOR_EACH_ECSACT_ASYNC_API_FN (ECSACT_DYLIB_UTIL_FN_PTR_DEFN);
29
+ #endif
30
+
31
+ #ifdef ECSACT_CORE_API_LOAD_AT_RUNTIME
32
+ FOR_EACH_ECSACT_CORE_API_FN (ECSACT_DYLIB_UTIL_FN_PTR_DEFN);
33
+ #endif
34
+
35
+ #ifdef ECSACT_DYNAMIC_API_LOAD_AT_RUNTIME
36
+ FOR_EACH_ECSACT_DYNAMIC_API_FN (ECSACT_DYLIB_UTIL_FN_PTR_DEFN);
37
+ #endif
38
+
39
+ #ifdef ECSACT_META_API_LOAD_AT_RUNTIME
40
+ FOR_EACH_ECSACT_META_API_FN (ECSACT_DYLIB_UTIL_FN_PTR_DEFN);
41
+ #endif
42
+
43
+ #ifdef ECSACT_SERIALIZE_API_LOAD_AT_RUNTIME
44
+ FOR_EACH_ECSACT_SERIALIZE_API_FN (ECSACT_DYLIB_UTIL_FN_PTR_DEFN);
45
+ #endif
46
+
9
47
#define HAS_FN_CHECK (fn_name, target_fn_name ) \
10
48
if (std::strcmp(target_fn_name, #fn_name) == 0 ) return true
11
49
16
54
static_assert (true , " macro requires ;" )
17
55
18
56
bool ecsact_dylib_has_fn(const char * fn_name) {
57
+ #ifdef ECSACT_ASYNC_API_LOAD_AT_RUNTIME
58
+ FOR_EACH_ECSACT_ASYNC_API_FN (HAS_FN_CHECK, fn_name);
59
+ #endif
60
+
61
+ #ifdef ECSACT_CORE_API_LOAD_AT_RUNTIME
62
+ FOR_EACH_ECSACT_CORE_API_FN (HAS_FN_CHECK, fn_name);
63
+ #endif
64
+
65
+ #ifdef ECSACT_DYNAMIC_API_LOAD_AT_RUNTIME
66
+ FOR_EACH_ECSACT_DYNAMIC_API_FN (HAS_FN_CHECK, fn_name);
67
+ #endif
68
+
19
69
#ifdef ECSACT_META_API_LOAD_AT_RUNTIME
20
70
FOR_EACH_ECSACT_META_API_FN (HAS_FN_CHECK, fn_name);
21
71
#endif
72
+
73
+ #ifdef ECSACT_SERIALIZE_API_LOAD_AT_RUNTIME
74
+ FOR_EACH_ECSACT_SERIALIZE_API_FN (HAS_FN_CHECK, fn_name);
75
+ #endif
76
+
22
77
return false ;
23
78
}
24
79
@@ -30,7 +85,23 @@ void ecsact_dylib_set_fn_addr(const char* fn_name, void (*fn_ptr)()) {
30
85
}
31
86
#endif // NDEBUG
32
87
88
+ #ifdef ECSACT_ASYNC_API_LOAD_AT_RUNTIME
89
+ FOR_EACH_ECSACT_ASYNC_API_FN (ASSIGN_FN_IF, fn_name, fn_ptr);
90
+ #endif
91
+
92
+ #ifdef ECSACT_CORE_API_LOAD_AT_RUNTIME
93
+ FOR_EACH_ECSACT_CORE_API_FN (ASSIGN_FN_IF, fn_name, fn_ptr);
94
+ #endif
95
+
96
+ #ifdef ECSACT_DYNAMIC_API_LOAD_AT_RUNTIME
97
+ FOR_EACH_ECSACT_DYNAMIC_API_FN (ASSIGN_FN_IF, fn_name, fn_ptr);
98
+ #endif
99
+
33
100
#ifdef ECSACT_META_API_LOAD_AT_RUNTIME
34
101
FOR_EACH_ECSACT_META_API_FN (ASSIGN_FN_IF, fn_name, fn_ptr);
35
102
#endif
103
+
104
+ #ifdef ECSACT_SERIALIZE_API_LOAD_AT_RUNTIME
105
+ FOR_EACH_ECSACT_SERIALIZE_API_FN (ASSIGN_FN_IF, fn_name, fn_ptr);
106
+ #endif
36
107
}
0 commit comments