comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Extending a third party tagged type while adding finalization
Date: Mon, 4 Dec 2017 17:19:39 +0100
Date: 2017-12-04T17:19:39+01:00	[thread overview]
Message-ID: <p03sir$12jo$1@gioia.aioe.org> (raw)
In-Reply-To: 18484b80-247e-4d01-9aea-2b60899846ac@googlegroups.com

On 04/12/2017 16:44, AdaMagica wrote:
> Aha, now I see what you are talking about. That's what I meant with cryptic message. You too often just expect mind reading (especially difficult with illegal code snippets).
> 
> Am Montag, 4. Dezember 2017 14:55:23 UTC+1 schrieb Dmitry A. Kazakov:

>> Which is catastrophic and there is *no* way to make it right in presence
>> of multiple derived types. You cannot announce a call to a deferred
>> implementation during initialization of a specific type T. That may
>> happen only after initializations of all derived specific types are
>> complete.
>>
>> Semantically it means that it must be called in the initialization of
>> T'Class. The proper sequence must be:
>>
>>      <do user initialization of T>
>>      <do user initialization of S>
>>      <do user initialization of S'Class>
>>      <do user initialization of T'Class> + call Foo of S
> 
> What do you mean by init of S'Class? There are no components of an
> S'Class. Sorry, I don't understand.
Then user initialization of S'Class is null.

The point is that in order to initialize a type that supports view 
conversion to a class-wide type (e.g. S'Class), the instance must be 
initialized as the corresponding class-wide type to be any time ready 
for that conversion.

In Ada there is no way to provide a user-defined hook on that 
initialization.

BTW, the class-wide initialization is not always null in Ada as one 
might think. When there is a task component ARM requires task activation 
to happen *after* calling all Initializes, which is logical, such tasks 
usually have class-wide discriminants. This is the point of class-wide 
initialization.

If we wanted to make a dispatching call to Foo safe we would need to 
have an Initialize for the corresponding class and put it there. And we 
could communicate with our task components there, which is presently 
impossible (and rightly so during type-specific initialization).

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

  reply	other threads:[~2017-12-04 16:19 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-22 12:43 Extending a third party tagged type while adding finalization Jere
2017-11-22 16:42 ` AdaMagica
2017-11-26 17:33   ` Jere
2017-11-26 18:15     ` Dmitry A. Kazakov
2017-11-26 19:31       ` Jere
2017-11-27  9:46     ` AdaMagica
2017-11-27 12:56       ` Jere
2017-11-27 15:00         ` AdaMagica
2017-11-27 16:38           ` Jere
2017-11-27 18:37             ` AdaMagica
2017-11-27 19:53               ` Jere
2017-11-28 11:48                 ` AdaMagica
2017-12-03  2:22                   ` Jere
2017-12-03 21:53               ` Robert Eachus
2017-12-04  7:58                 ` Dmitry A. Kazakov
2017-12-04 14:59                   ` Robert Eachus
2017-12-04 15:39                     ` Dmitry A. Kazakov
2017-11-27 18:10     ` Shark8
2017-11-27 19:56       ` Jere
2017-11-28  1:55       ` Randy Brukardt
2017-12-03  2:47         ` Jere
2017-12-03  9:29           ` Dmitry A. Kazakov
2017-12-03 15:10             ` AdaMagica
2017-12-03 16:39               ` Dmitry A. Kazakov
2017-12-03 19:34             ` AdaMagica
2017-12-03 19:41               ` Dmitry A. Kazakov
2017-12-04 12:38                 ` AdaMagica
2017-12-04 13:19                   ` AdaMagica
2017-12-04 13:55                     ` Dmitry A. Kazakov
2017-12-04 15:44                       ` AdaMagica
2017-12-04 16:19                         ` Dmitry A. Kazakov [this message]
2017-12-04 20:54           ` Randy Brukardt
2017-12-04 21:02             ` Dmitry A. Kazakov
2017-12-05 21:09               ` Randy Brukardt
2017-12-05 21:29                 ` Dmitry A. Kazakov
2017-12-07  1:13                   ` Randy Brukardt
2017-12-07  8:36                     ` Dmitry A. Kazakov
2017-12-07 23:22                       ` Randy Brukardt
2017-12-08  9:30                         ` Dmitry A. Kazakov
2017-12-09  0:17                           ` Randy Brukardt
2017-12-11  9:03                             ` Dmitry A. Kazakov
2017-12-11 22:42                               ` Randy Brukardt
2017-12-12 16:11                                 ` AdaMagica
2017-12-12 20:08                               ` G. B.
2017-12-12 20:32                                 ` 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