Compiler patch for runtime reflection

Daniel Gibson metalcaedes at gmail.com
Fri Oct 21 14:23:17 PDT 2011


Am 21.10.2011 21:07, schrieb Vladimir Panteleev:
> Hi,
>
> Igor Stepanov has created a patch for DMD and Druntime which adds RTTI
> information for class and struct members.
>
> Example:
>
> import std.stdio;
>
> class Foo
> {
> static void PrintHello()
> {
> writeln("Hello");
> }
> }
> void main()
> {
> auto info = cast(OffsetTypeInfo_StaticMethod)Foo.classinfo.m_offTi[0];
> assert(info.name == "PrintHello");
> auto print = cast(void function())info.pointer;
> print(); //prints "Hello"
> }
>
> While the inclusion of such functionality into the language remains a
> disputed matter, would anyone be interested in an unofficial patch for
> this?
>
> Walter: would it be okay if the compiler changes were published as a
> GitHub fork, or should we stick to patches?
>

I'd love to see proper runtime reflection support in D, including 
functionality to get information about available methods (their name and 
parameters) and a way to call them.
Something that is close to what Java offers would be great.

BTW: I don't really see the problem with providing this information 
(overhead-wise) - the information needs to be available once per 
class/struct, but objects of classes just need one pointer to it (other 
types don't even need that because they're not polymorphic and - like 
methods of structs - the address of the information is known at 
compile-time).

Cheers,
- Daniel


More information about the Digitalmars-d mailing list