Using __traits to find functions in sub-modules
    nrgyzer via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Thu Oct 16 11:39:48 PDT 2014
    
    
  
Hi,
I'm using structs to describe my functions:
struct example
{
    string name;
    uint someValue;
}
module mod.example1;
@example("example1", 1)
void myFunction()
{
// do something
}
module mod.example2;
@example("example2", 2)
void myFunction()
{
// do something
}
I'm using the struct to describe functions in different modules. 
Now, I want add all functions which are described using the 
example-struct to an array during compile time. But how can I do 
this? I know, I can use __trait(allMembers, mod.example1) and 
__trait(allMembers, mod.example2), but I only want specify the 
parent module (mod), for instance:
void main()
{
    foreach (member, __traits(allMembers, mod))
    {
       writeln(member);
    }
}
But this only shows "object" - nothing else. No sub-modules like 
mod.example1 or mod.example2. So, how can I find all functions 
that are described using my structure during compile time and add 
them to an array?
I already tried this:
void main()
{
    foreach (cmodule; ModuleInfo)
    {
       foreach (submodule; __traits(allMembers, cmodule))
       {
       // ... also tried: foreach (submodule; __traits(allMembers, 
mixin(cmodule.name))), cmodule.name is not available during 
compile time...
       }
    }
}
But it always stats that 'cmodule' has no members. Does anyone 
know how to solve the problem?
    
    
More information about the Digitalmars-d-learn
mailing list