Reflecting on a module

Adam D. Ruppe destructionator at gmail.com
Wed Nov 6 18:02:29 PST 2013


On Thursday, 7 November 2013 at 01:37:24 UTC, Shammah Chancellor 
wrote:
> How does one reflect on all the classes in a module?

__traits(allMembers, your_module)

There's two easy ways to get your_module: __traits(parent, 
some_top_level_symbol0 or mixin("module.name.here");

allMembers gives a list of strings, which are the names of 
everything. Then you do __traits(getMember, your_module, name) in 
the loop to get it and see if it is a class.

If you need more details, I can write a sample function too. I 
used this technique in my terminal emulator utility module:

https://github.com/adamdruppe/terminal-emulator/blob/master/utility.d

check the main function there. Here, I look for functions marked 
export, but looking for classes and UDAs isn't much different. 
static if(is(T == class)), __traits(getAttributes), etc instead 
of getProtection.


More information about the Digitalmars-d-learn mailing list