1 //module dxx.sys.dllexp;
2 
3 module dxx.sys.dllexp;
4 version(unittest) {
5 } else {
6     version(DXX_Module) {
7 
8         import core.stdc.stdio : printf;
9         import std.experimental.logger;
10         import std.exception;
11         import dxx.constants;
12 
13         import dxx.sys.loader;
14 
15         extern(C):
16         void load( void* userdata ) {
17             debug(Module) {
18               sharedLog.info("[module] load");
19             }
20             Module.getInstance.load;
21         }
22 
23         void unload(void* userdata) {
24             debug(Module) {
25               sharedLog.info("[module] unload");
26             }
27             Module.getInstance.unload;
28         }
29 
30         void init(void* data) {
31             assert(data);
32             debug(Module) {
33               sharedLog.info("[module] init");
34             }
35 
36             auto moduleData = cast(shared(ModuleData)*)data;
37 
38             assert(moduleData.hostRuntime);
39 
40             Module.getInstance.moduleData = moduleData;
41             moduleData.moduleRuntime = &RTConstants.runtimeConstants;
42             enforce(moduleData.hostRuntime.checkVersion(RTConstants.constants.semVer));
43 
44             Module.getInstance.init;
45         }
46         void uninit(void* userdata){
47             Module.getInstance.moduleData = cast(shared(ModuleData)*) userdata;
48             debug(Module) {
49               sharedLog.info("[module] uninit");
50             }
51             Module.getInstance.deinit;
52         }
53 
54         void update() {
55             debug(Module) {
56               sharedLog.info("[module] update");
57             }
58             Module.getInstance.update;
59         }
60     }
61 }