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 }