我正在研究一个现有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.
这是可以使用mixins完成的事情吗?
我不得不嘲笑它,但我认为你应该可以在不使用字符串混合的情况下使用静态foreach机能的研究。您可能需要使用模板混合来从正确的作用域绑定事物。 – BCS