私は既存のCライブラリのいくつかのDバインディングに取り組んでいます。そして、私はたくさんの関数定義とそれらのバインディングを持っています。例:Dで可変数の文字列引数を持つミックス?
// Functions
void function(int) funcA;
long function() funcB;
bool function(bool) funcC;
char function(string) funcD;
// etc...
// Bindings
if(!presentInLibrary("func")) return false;
if(!bindFunction(funcA, "funcA")) return false;
if(!bindFunction(funcB, "funcB")) return false;
if(!bindFunction(funcC, "funcC")) return false;
if(!bindFunction(funcD, "funcD")) return false;
// etc...
このモデルは、DerelictがOpenGL拡張機能をどのように処理するかと非常によく似ています。しかし、これは余分なタイピングのように思える。上記のような「束縛」部分を表現する方法が本当に好きです:
BINDGROUP("func", "funcA", "funcB", "funcC", "funcD", ...); // Name of function group, then variable list of function names.
これはミックスインでできますか?
私はそれを突き詰めなければなりませんが、通常の静的foreachを使用して文字列の混合を行わずにこの作業を行うことができるはずですfuction。正しい範囲からバインドするには、テンプレートミックスインを使用する必要があります。 – BCS