[fpc-devel] RTTI interface & variant late binding issue (mORMot)

Arnaud Bouchez webcontact01 at synopse.info
Sat Feb 7 13:03:37 CET 2015


Just to be clear, because it sounds like there is some confusion in the 
discussion.

About http://bugs.freepascal.org/view.php?id=26774

1. We do NOT need Invoke() implemented.
2. We do NOT need extended RTTI as available since Delphi 2010, nor 
features like attributes.
3. We do NOT need 100% compatibility with Delphi - it is fine to have 
some diverse data layout.
4. There should not be huge platform specific work.

Because:

1. We have our own low-level Invoke, for x86 and x64 platforms, working 
on both Windows and Linux.
Note: you can take a look at how we defined the asm stubs, in mORMot.pas 
- much better design than the RTTI.pas or RIO.pas code IMHO - see 
http://blog.synopse.info/post/2012/03/07/Interface-based-services-implementation-details 


2. We need only the RTTI as available since Delphi 6 for IInvokable 
methods arguments.

3. We already introduced some FPC-specific code, e.g. to follow RTTI 
data alignment on platforms which demand it.

4. By design, point 2 is mostly platform-independent, and some details 
(like calling conventions) do already exist for other part of the 
existing FPC RTTI.
What is needed by this bug report is to have 
objectdef_rtti_interface_full(def:tobjectdef) implemented in ncgrtti.pas.

Any new input is welcome!

Arnaud



More information about the fpc-devel mailing list