Thorsten Engler wrote:
Apart from the custom attributes and the Invoke, I don't see what there is extra ?

No usable RTTI for records
No usable RTTI for arrays
No RTTI for private, protected and public(!) members (only published)
No usable RTTI for published methods (param and return types are just given
as strings, not as references to other type infos, no information about
calling convention)
No usable type information for published fields (only a name to offset
mapping is given, no type information at all)
And so on...

IMHO it would be very nice if the FPC RTTI system could be extended to support 
some of these things indeed.

My applications:
- streaming: for a custom input file format (that is more or less like JSON, 
but has a stronger typing mechanism etc.)
- scripting: easily expose parts of my program to a scripting engine, e.g. to 
Lua (see also pLua, http://eonclash.com/ViewProduct.php?ProductID=26)

My wishlist:
- support for dynamic/static arrays, e.g. property Items:array of string
- support for array properties, e.g. property Items[i:integer]:string (though 
perhaps less useful for streaming since the range of the index(es) is not 
known, it is very useful in scripting)
- support for records and pointers would also be nice
- support for method invocation (scripting)
 - support for calling a (parameterless) constructor instead of having to stick 
to NewInstance or some virtual constructor in a known base class (such as 
TComponent's Create)
- RTTI for public members (private and protected are internal to objects 
anyway; note also that fields are usually private in OOP designs)

Just my 2 cents,

Bram

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to