Newbie initial comments on D language - RTTI and run-time reflection

Robert Fraser fraserofthenight at gmail.com
Wed Jan 30 16:48:29 PST 2008


Edward Diener wrote:
> 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.

That's in D1, too.



More information about the Digitalmars-d mailing list