[fpc-devel] Published record

Michael Van Canneyt michael at freepascal.org
Sat Aug 17 16:45:43 CEST 2024



On Sat, 17 Aug 2024, Kostas Michalopoulos via fpc-devel wrote:

> 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

See my answer to Michalis: It is possible, but no streaming, so no published.

Michael.


More information about the fpc-devel mailing list