On 10/3/20 10:16 AM, realhet wrote:
I tried it to put into a function:
auto getSymbolNamesByUDA(T, string uda)(){
string[] res;
static foreach(a; getSymbolsByUDA!(T, uda)) res ~= a.stringof;
return res;
}
D __traits give you strings, the std.traits thing is giving you symbols.
Don't use it, just use the compiler traits:
// note, not tested
auto getSymbolNamesByUDA(T, string uda)(){
string[] res;
static foreach(n; __traits(allMembers, T)) {
// static, but don't use static foreach so you can break
foreach(u; __traits(getAttributes, __traits(getMember, T, n))
static if(is(typeof(u) == string) && u == uda) {
res ~= n;
break;
}
}
return res;
}
-Steve