comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Prologue and epilogue aspects
Date: Wed, 31 Jan 2018 16:05:46 +0100
Date: 2018-01-31T16:05:46+01:00	[thread overview]
Message-ID: <p4sm09$126n$1@gioia.aioe.org> (raw)
In-Reply-To: p4qq26$m08$1@franka.jacob-sparre.dk

On 30/01/2018 23:02, Randy Brukardt wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:p4pah6$1gan$1@gioia.aioe.org...
>> On 30/01/2018 00:08, Randy Brukardt wrote:
>>> You mean sort of like "universal_controlled"?
>>
>> No, that would require a common base for old Ada.Finalization.Controlled
>> and new Controlled_Interface. no that this is undesired, but it was
>> rejected already. So the idea is an anonymous base, with the name nobody
>> dare to call. (:-))
>>
>>> As previously noted, that
>>> might work for streams (and maybe pools),but controlled usually carries
>>> components along as well, so an interface (which cannot have components)
>>> is
>>> a bad match.
>>
>> That is an implementation detail. There is no components officially, so it
>> is up to the compiler designer to stuck these somewhere and take care of
>> the cases when both Ada.Finalization.Controlled and Controlled_Interface
>> are inherited from.
> 
> Right, but implementing "implicit components" this way is the same work as
> supporting full multiple inheritance -- the components couldn't be at a
> fixed location in the object and you would have to use dispatching or
> something similar to find them. If you're going to implement that sort of
> thing, it would be criminal not to support it generally for all types -- and
> then you don't need a Controlled_Interface at all (or any other interface,
> for that matter).

There would be no components unless Ada.Finalization.Controlled inherited.

When inherited from Controlled_Interface only, all checks if to call 
Initialize, Finalize, Adjust will be static. No lists of objects.

>> BTW, I am not a fan of keeping lists of controlled objects and the rules
>> to finalize objects implicitly. IMO it is a misfeature which adds no
>> safety, just overhead. If Controlled_Interface would drop these rules I
>> would be only happy. Then Controlled_Interface could be an interface
>> without messy postmortem finalization rules, which would apply only if
>> Ada.Finalization.Controlled inherited.
> 
> Huh? If there is no implicit finalization, then there is no need for
> controlled types at all, as they serve no purpose. (If you want to
> explicitly finalize things, you can define any subprogram for that purpose.

"Implicit" meant called upon implicit destruction, e.g. when access 
types go out of the scope. That thing is not needed. I don't see other 
reason for the Controlled_Interface to induce hidden components.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  reply	other threads:[~2018-01-31 15:05 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-26 19:56 Prologue and epilogue aspects Dmitry A. Kazakov
2018-01-27  7:17 ` Randy Brukardt
2018-01-27  9:33   ` Dmitry A. Kazakov
2018-01-29 23:08     ` Randy Brukardt
2018-01-30  8:31       ` Dmitry A. Kazakov
2018-01-30 22:02         ` Randy Brukardt
2018-01-31 15:05           ` Dmitry A. Kazakov [this message]
2018-02-01  0:17             ` Randy Brukardt
2018-02-01  9:03               ` Dmitry A. Kazakov
2018-02-01 23:47                 ` Randy Brukardt
2018-02-02  6:59                   ` Niklas Holsti
2018-02-02 22:20                     ` Randy Brukardt
2018-02-02  8:46                   ` Dmitry A. Kazakov
2018-02-02  9:31                     ` Niklas Holsti
2018-02-02 10:21                       ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox