Git init
[pkgs/e/elektra.git] / src / include / kdbloader.h
1 /* $Id$ */
2
3 #ifndef KDBLIBLOADER_H
4 #define KDBLIBLOADER_H
5
6 #ifdef ELEKTRA_STATIC
7
8 /* The static case
9  *
10  * Struct which contain export symbols
11  *  Format :
12  *  --------
13  *
14  *  filename, NULL
15  *  symbol1, &func1,
16  *  symbol2, &func2,
17  *  filename2, NULL
18  *  symbol3, &func3,
19  *  symboln, &funcn,
20  *  NULL, NULL
21  */
22 typedef struct {
23         const char *name;
24         void (*function)(void);
25 } kdblib_symbol;
26 typedef kdblib_symbol* kdbLibHandle;
27
28 extern kdblib_symbol kdb_exported_syms[];
29
30 #else
31 # ifdef WIN32
32
33 /* Windows case, non static */
34 # include <windows.h>
35 typedef HMODULE kdbLibHandle;
36
37 # else
38
39 /* Default case */
40 #  include <ltdl.h>
41 typedef lt_dlhandle kdbLibHandle;
42
43 # endif
44 #endif
45
46
47 /* General pointer to kdbLib Functions and pointer to kdbLibBackend function */
48 typedef void (*kdbLibFunc)(void);
49
50 /* Functions */
51 int kdbLibInit(void);
52 kdbLibHandle kdbLibLoad(const char *backendName);
53 kdbLibFunc kdbLibSym(kdbLibHandle handle, const char *symbol);
54 int kdbLibClose(kdbLibHandle handle);
55 const char *kdbLibError(void);
56
57 #endif /* KDBLIBLOADER_H */