■
D言語では、モジュール内にstatic this(){}
関数が使えるのですがこれをうまく使うと
リンクするかしないかだけでアプリケーションに機能追加をすることができます。
こんな感じです。
//plugin.d module plugin; class Plugin{ void plugin(){printf("plugin");} } Plugin[char[]] plugins; static this(){ plugins["Plugin"]=new Plugin(); } void main(){ foreach(Plugin p;plugins){ p.plugin(); } }
dmd plugin.d
plugin
//plugin2.d class Plugin2{ void plugin(){printf("plugin2");} } static this(){ plugins["Plugin2"]=new Plugin2(); }
dmd plugin.d plugin2.d
plugin plugin2
ファイル読み込み部を最終リリース版では、スタティックなデータにしたり、いろいろできそうです。