From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Extending a third party tagged type while adding finalization
Date: Mon, 4 Dec 2017 14:54:19 -0600
Date: 2017-12-04T14:54:19-06:00 [thread overview]
Message-ID: <p04clr$e6$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 037e7f02-9149-4648-b7c5-91f67c1c1961@googlegroups.com
"Jere" <jhb.chat@gmail.com> wrote in message
news:037e7f02-9149-4648-b7c5-91f67c1c1961@googlegroups.com...
> On Monday, November 27, 2017 at 8:55:19 PM UTC-5, Randy Brukardt wrote:
>> "Jere" wrote in message
>> ...
>> >> Based on what I have read so far, I didn't see any discussion that
>> >> would
>> >> lead me to think this will be changed at least in the near future. I
>> >> wish there was a way it would be easy for vendors to do something
>> >> like:
>> >>
>> >> type Some_Type is tagged private;
>> >> for Some_Type'Initialize use Initialize_Some_Type;
>> >> for Some_Type'Adjust use Adjust_Some_Type;
>> >> for Some_Type'Finalize use Finalize_Some_Type;
>> >>
>> >> and then just have the compiler handle adding the needed structures
>> >> to the type under the hood (like how GNAT uses Controlled to hold
>> >> a linked list under the hood...but compiler managed).
>>
>> The only way this could be made to work in Janus/Ada would be for all
>> tagged
>> types to be controlled, which would waste time and space for types that
>> aren't actually controlled. Since Janus/Ada was designed to be
>> space-efficient, that would be going directly against our primary goal -
>> not
>> something I'd do without a fight.
>
> Well, I am definitely not advocating that all tagged types need to be
> controlled. I was just musing about whether there was a different way
> to do it. 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.
My personal opinion is that all newly designed ADTs should be derived from
Controlled (or Limited_Controlled, if limited), even if there is no
immediate need for finalization. That's especially true if extensions are
expected; one doesn't want to put unnecessary limitations on extensions.
The sort things that can't afford to be controlled are those that aren't
really ADTs anyway (think coordinates of a windows).
Randy.
next prev parent reply other threads:[~2017-12-04 20:54 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
2017-12-04 20:54 ` Randy Brukardt [this message]
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