[fpc-devel] Published record

Kostas Michalopoulos badsectoracula at gmail.com
Sat Aug 17 13:43:08 CEST 2024


On 8/16/24 8:40 PM, Michalis Kamburelis via fpc-devel wrote:
> If we could instead just put TVector3 in the published section, and
> make it exposed in the object inspector (maybe adding some additional
> code to use RTTI, but that is made *once*, not every time we need to
> expose TVector3) this would be great :)

Seconding this, for pretty much the same use case: my 3D game engine 
also uses TVector, etc records (and objects! - stuff being allocated in 
stack or "inline" other objects/classes is incredibly important) and 
needs to expose them via RTTI/published and i have to use various kludgy 
hacks to work around a language limitation that IMO was already 
questionable back in the 90s when Delphi 2 was released (i might kinda 
accept it for Delphi 1 having to work in 16bit mode :-P).

Instead of having a proxy object, i "flatten" the fields using getters 
and setters so, e.g., a "property Position: TVector read FPosition write 
SetPosition" in the public section also has "property PositionX: Single 
read GetPositionX write SetPositionX" and similar for PositionY and 
PositionZ. Obviously with something like "property Transformation: 
TTransformation read FTransformation write SetTransformation" which has 
Position, Rotation and Scale properties (as TVectors) that get flattened 
to nine published properties so they can be accessed via RTTI (and thus 
have automatic serialization, deserialization, property editing UI, 
clipboard copy/paste, undo/redo support via property diffs, etc without 
having to do all that manually via code) it becomes kinda unwieldy fast.

Sadly i also do have to use proxy objects in some cases, e.g. i have a 
generic object "TDynArray" for dynamic arrays which is wrapped via a 
"TSerializableCollection" class so that the 
serialization/deserialization code can automatically 
write/construct/read published collections of objects.

It'd be very useful if the Run-Time Type Information could describe all 
the Type Information the compiler already knows about :-P

Kostas



More information about the fpc-devel mailing list