Я работаю над некоторыми привязками D для существующей библиотеки C, и у меня есть несколько определений функций и несколько привязок для них.Например:
// 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.
Это можно сделать с помощью миксинов?