27#ifdef INCLUDE_API_FROM_MODULE_LOAD
28 #define OPTIONAL(return_type, function_name, ...) \
29 if(!g_module_symbol(module->module, #function_name, (gpointer) & (module->function_name))) \
30 module->function_name = NULL
31 #define REQUIRED(return_type, function_name, ...) \
32 if(!g_module_symbol(module->module, #function_name, (gpointer) & (module->function_name))) \
34 #define DEFAULT(return_type, function_name, ...) \
35 if(!g_module_symbol(module->module, #function_name, (gpointer) & (module->function_name))) \
36 module->function_name = default_ ## function_name
39 module->module = g_module_open(libname, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
40 if(!module->module)
goto api_h_error;
42 if(!g_module_symbol(module->module,
"dt_module_dt_version", (gpointer) & (version)))
goto api_h_error;
47 libname, abs(version()), version() < 0 ?
"debug" :
"opt", abs(
dt_version()),
51 if(!g_module_symbol(module->module,
"dt_module_mod_version", (gpointer) & (module->version)))
goto api_h_error;
56 if(module->module) g_module_close(module->module);
59 #undef INCLUDE_API_FROM_MODULE_LOAD
60#elif defined(INCLUDE_API_FROM_MODULE_H)
61 #define OPTIONAL(return_type, function_name, ...) return_type (*function_name)(__VA_ARGS__)
62 #define REQUIRED(return_type, function_name, ...) return_type (*function_name)(__VA_ARGS__)
63 #define DEFAULT(return_type, function_name, ...) return_type (*function_name)(__VA_ARGS__)
65 #undef INCLUDE_API_FROM_MODULE_H
66#elif defined(INCLUDE_API_FROM_MODULE_LOAD_BY_SO)
67 #define OPTIONAL(return_type, function_name, ...) module->function_name = so->function_name
68 #define REQUIRED(return_type, function_name, ...) module->function_name = so->function_name
69 #define DEFAULT(return_type, function_name, ...) module->function_name = so->function_name
70 #undef INCLUDE_API_FROM_MODULE_LOAD_BY_SO
73 #define OPTIONAL(return_type, function_name, ...) return_type function_name(__VA_ARGS__)
74 #define REQUIRED(return_type, function_name, ...) return_type function_name(__VA_ARGS__)
75 #define DEFAULT(return_type, function_name, ...) return_type function_name(__VA_ARGS__)
80 #pragma GCC visibility push(default)
85 #pragma GCC visibility pop
void dt_print(dt_debug_thread_t thread, const char *msg,...)
Definition darktable.c:1395
@ DT_DEBUG_CONTROL
Definition darktable.h:473
static int dt_version()
Definition darktable.h:111
#define INCLUDE_API_FROM_MODULE_LOAD
int dt_module_dt_version()
int dt_module_mod_version()