Iterate all visible symbols, even from imported modules
Lodovico Giaretta via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Jul 18 14:19:45 PDT 2016
On Monday, 18 July 2016 at 21:12:38 UTC, Meta wrote:
> On Monday, 18 July 2016 at 13:00:16 UTC, Lodovico Giaretta
> wrote:
>> As per title, is it possible to iterate all visible symbols of
>> the current module and of all imported modules and packages?
>> My aim is to find everything in scope that has a specific UDA.
>>
>> module foo;
>>
>> import std.stdio, std.array, std.algorithm;
>>
>> void bar(){}
>>
>> struct S{}
>>
>> void main()
>> {
>> // prints ["object", "std", "bar", "S", "main"]
>> // how do I discover that "std" is a package?
>> writeln([__traits(allMembers, foo)]);
>>
>>
>> // prints ["object", "core", "std", "KeepTerminator",
>> "GCC_IO", ... ]
>> // strange thing: it looks the same even if I remove all
>> imports other than std.stdio
>> writeln([__traits(allMembers, foo.std)]);
>> }
>>
>> Thank you in advance.
>
> This answer to a similar question on StackOverflow may be
> useful:
>
> http://stackoverflow.com/questions/25555329/d-finding-all-functions-with-certain-attribute/25560800#25560800
Wow!
Looks exactly what I was looking for. I'll give this a try as
soon as possible.
Thank you.
More information about the Digitalmars-d-learn
mailing list