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: Sun, 3 Dec 2017 10:29:02 +0100
Date: 2017-12-03T10:29:02+01:00	[thread overview]
Message-ID: <p00g50$1o2v$1@gioia.aioe.org> (raw)
In-Reply-To: 037e7f02-9149-4648-b7c5-91f67c1c1961@googlegroups.com

On 2017-12-03 03:47, Jere wrote:

> Well, I am definitely not advocating that all tagged types need to be
> controlled.

Certainly all types must be, including scalars, arrays, tasks and 
class-wide types.

Having class-wide initialization and finalization is essential if there 
are task components or class-wide access components (Rosen's trick):

    type T is new Ada.Finalization.Controlled with record
       Self : not null access T'Class;
    end record;
    procedure Initialize (X : in out T);
    procedure Foo (X : in out T) is abstract;

    type S is new T with ...
    overriding procedure Foo (X : in out S);

    procedure Initialize (X : in out T) is
    begin
       X.Self.Foo; -- Boom!
    end Initialize;

Dispatching calls must be illegal during type-specific 
initialization/finalization. They are OK after these in the class-wide 
initialization or before in the class-wide finalization.

> I was just musing about whether there was a different way
> to do it.

Yes, there is no need to keep lists of objects. It is enough to have 
only static analysis to decide what kind of finalization to call. Nobody 
cares about finalization of implicitly collected objects, it is a bug 
anyway.

> The Ada Finalization method is very clunky and can be
> limiting at times.  There may not be a better way to do it.  At the
> end of the day, I find a lot of the errors our programmers make is
> forgetting to put in a Create/Intialize or Clean_Up/Finalize call
> on objects that do not have Controlled ancestors.  It's a
> maintenance headache, so I look for ways to try to remedy that via
> design.

Welcome in the club.

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


  reply	other threads:[~2017-12-03  9:29 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 [this message]
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
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