Newbie initial comments on D language - RTTI and run-time reflection
Edward Diener
eddielee_no_spam_here at tropicsoft.com
Wed Jan 30 15:18:34 PST 2008
Robert Fraser wrote:
> Edward Diener wrote:
>> But that is still only half the story. Run-time reflection in a RAD
>> environment needs the ability to be able to create an object directly
>> from the type of that object, and the type of an object must itself be
>> instantiable as an object. This final ability is in Java, Python,
>> .Net, and C++ Builder/Delphi. I can only encourage D to have this
>> ability also.
>
> From http://www.digitalmars.com/d/2.0/abi.html :
>
> The class definition:
>
> class XXXX
> {
> ....
> };
>
> Generates the following:
>
> * An instance of Class called ClassXXXX.
> [...]
>
> And from http://www.digitalmars.com/d/2.0/phobos/object.html :
>
> class ClassInfo;
> Runtime type information about a class. Can be retrieved for any
> class type or instance by using the .classinfo property. A pointer to
> this appears as the first entry in the class's vtbl[].
>
> byte[] init;
> class static initializer (init.length gives size in bytes of class)
>
> string name;
> class name
>
> void*[] vtbl;
> virtual function pointer table
>
> Interface[] interfaces;
> interfaces this class implements
>
> ClassInfo base;
> base class
>
> static ClassInfo find(string classname);
> Search all modules for ClassInfo corresponding to classname.
>
> Returns:
> null if not found
>
> Object create();
> Create instance of Object represented by 'this'.
>
> const(MemberInfo[]) getMembers(string name);
> Search for all members with the name 'name'. If name[] is null,
> return all members.
That is start, but it looks like I will wait for 2.0 to be done before I
investigate further.
BTW I do realize what a major effort it is to provide metaclass
information such as ClassInfo and further facilities so that full
run-time reflection can be done. I would not be disappointed if D did
not fully offer such facilities, but my argument here is not that I do
not understand the huge effort but that once D offers that sort of
facility it becomes possible do to some amazing thing with it and would
be worth it.
More information about the Digitalmars-d
mailing list