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