__FUNCTION__

Christopher Wright dhasenan at gmail.com
Sun Mar 1 05:56:04 PST 2009


Andrei Alexandrescu wrote:
> Christopher Wright wrote:
>> Andrei Alexandrescu wrote:
>>> grauzone wrote:
>>>> For classes and structs, this is already possible: 
>>>> typeof(this).stringof
>>>
>>> Not outside of a member function. This is crippling my Visitor 
>>> implementation.
>>
>> I use it in static constructors. If it doesn't work, well, that's news 
>> to me.
>>
>> I don't know about "typeof(this) property;", though. I never tried it.
>>
>>>> Now we only need a way to get some kind of compile time object for 
>>>> functions and modules (like the type for classes/structs). Then you 
>>>> simply can use .stringof on them.
>>>
>>> There's much more to reflection that we need to define.
>>
>> Runtime as well as compile time.
> 
> Compile-time. Runtime follows and only needs a little glue.

That glue requires user intervention. Would you add "mixin(Reflect);" to 
every class you wrote? But even that isn't sufficient -- you would have 
to implement some interface indicating that this class has reflection 
information, and pass objects around via that interface rather than 
using Object.

There should be a way to suppress emitting complex reflection 
information -- a command-line flag and a pragma. But I think it's a bit 
much to ask users to mark every class they create in two different ways.

> Andrei



More information about the Digitalmars-d mailing list