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

Reply via email to