| 1234567891011121314151617181920212223242526272829303132 | import haxe.PosInfos;using haxe.io.Path;typedef ExamplePluginApi = {	function hello():Void;	function stringifyPosition(p:haxe.macro.Expr.Position):String;	function hijackStaticTest():Void;}class Example {	/** Access plugin API */	static public var plugin(get,never):ExamplePluginApi;	static var _plugin:ExamplePluginApi;	static function get_plugin():ExamplePluginApi {		if(_plugin == null) {			try {				_plugin = eval.vm.Context.loadPlugin(getPluginPath());			} catch(e:Dynamic) {				throw 'Failed to load plugin: $e';			}		}		return _plugin;	}	static function getPluginPath():String {		var currentFile = (function(?p:PosInfos) return p.fileName)();		var srcDir = currentFile.directory().directory();		return Path.join([srcDir, 'cmxs', Sys.systemName(), 'plugin.cmxs']);	}}
 |