[fpc-pascal]How to obtain runtime type of class?

Jonas Maebe jonas at zeus.rug.ac.be
Tue Feb 25 13:05:01 CET 2003

On dinsdag, feb 25, 2003, at 15:01 Europe/Brussels, Anton Tichawa wrote:

> What object code is generated for this? I assume that, informally 
> speaking,
> Ord(TClassB) = Ord(@VMT)
> and that
> if x IS TClassB
> yields somthing like
> if @(x.VMT) = TClassB?
> Am I wrong here?

Yes, because "is" also returns true if the instance is of a type that 
inherits from tclassb. So the "is" operator is translated into a call 
to the following helper routine

     function fpc_do_is(aclass : tclass;aobject : tobject) : 
s: 'FPC_DO_IS']; {$ifdef hascompilerproc} compilerproc; {$endif}
          fpc_do_is:=assigned(aobject) and assigned(aclass) and


More information about the fpc-pascal mailing list