[fpc-pascal] Obtain Class hierarchy (in MacPas mode)

Adriaan van Os fpc at microbizz.nl
Tue Sep 21 14:18:17 CEST 2010


Michael Van Canneyt wrote:
> 
> On Tue, 21 Sep 2010, Florian Klaempfl wrote:
> 
>> Am 21.09.2010 13:42, schrieb Adriaan van Os:
>>> Michael Van Canneyt wrote:
>>>>
>>>>
>>>> On Tue, 21 Sep 2010, Adriaan van Os wrote:
>>>>
>>>>> I am looking for a way to obtain the class hierarchy of a program in
>>>>> MacPas mode (where there are no published properties). TObject has
>>>>> ClassParent, so a list of Class types would be sufficient, I think. I
>>>>> can't find however a routine in the RTL to obtain such a list.
>>>>
>>>> There is no such routine in the RTL, to my knowledge.
>>>
>>> Can I add it ? I guess a low-level pointer to a list of VMT's would be
>>> sufficient to implement it ?
>>
>> Problem is: it breaks smartlinking.

Yes, I understand that. I looked at the assembly generated for a simple test program and there are 
separate al_globals entries for each vmt and separate al_rtti entries for the vmt rtti. I asssume 
the very reason for the separate entries is smart linking.

Hm, I guess I can look at the data section of the executable but it would be highly dependant of 
the executable binary format.

Is it possible to produce a separate data section/entry that refers to all al_globals and/or all 
al_rtti entries without breaking smart-linking ?

> Why? It's just walking the ParentClass hierarchy of a given class; which is
> what RTTI does anyway ?

And the other way round (from a class to each subclass).

Regards,

Adriaan van Os




More information about the fpc-pascal mailing list