On Wed, 27 Jul 2016, Jonas Maebe wrote:
On 27/07/16 22:47, Sven Barth wrote:
Am 27.07.2016 21:04 schrieb "Maciej Izak" <hnb.c...@gmail.com
<mailto:hnb.c...@gmail.com>>:
In that case SmartPtr/SmartObj/Nullable type has no sense for me. The
basic purpose is excluded. You can do that today by using for example
proxyobject._.foo();
What is the basic purpose? I did not see any explanation of that in the
original mail. It only said that it is vital to the smart pointers/ARC
objects and nullable types implementation.
As far as I understand I think Izak wants (needs) 2 things:
- "Default" property for a property of records.
I think that this feature by itself presents little difficulty.
This is enough to implement "nillable" types, except for 1 thing.
(second point)
- The ability to pass properties as var arguments.
I think this feature is not doable. The closest you can come to this is:
tmp:=A.Prop;
try
MyProcedureVarArgument(tmp);
finally
A.Prop:=Tmp;
end;
But this presents obvious timing problems: A.Prop is written only on return
of the function.
Failing that, Izak tries to simulate the 'address' of the default property
of a record.
IMHO The first can be done, the solution to the second is a bad idea.
Michael.
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel