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

Reply via email to