From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Calling inherited primitive operations in Ada
Date: Mon, 5 Sep 2022 09:34:37 +0200 [thread overview]
Message-ID: <tf48qe$1pm$1@gioia.aioe.org> (raw)
In-Reply-To: 458444ed-e384-4663-896c-bb38dae3c5cbn@googlegroups.com
On 2022-09-05 08:56, Emmanuel Briot wrote:
> Although it is certainly true that using holders works, it is not applicable when designing a containers library that intends to be
> mostly compatible with Ada containers.
Right. Holder requires finalization and finalization means language
prescribed finalization lists which is highly undesirable in many cases.
> The main benefit to this approach is that users still retrieve directly the type they are interested in (e.g. String)
> rather than a holder-to-string.
And that the container designer has control over the pool where the
items get actually allocated.
> I must admit I have very limited experience with Holders, which I have never used in production code (nor, apparently, have my
> colleagues and ex-colleagues).
I have been using the idea for a long time, since Ada 95 before the
standard library had them. In my experience holders multiply the number
of container variants:
1. Definite elements
2. Indefinite elements
+
3. Holder elements in the interface (and maybe implementation)
The third gets a holder package as a formal parameter or, alternatively,
is a child of a holder package (for performance reasons). The container
interface has direct operations in terms of the Element_Type as well as
in terms of the holder type.
Sometimes the holder variant is actually the indefinite one that
promotes holders only in its interface.
P.S. In my opinion helper types/package is an evil of far greater scale
than any premature optimization!
The programmers doing the latter at least try to understand the code
they write.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2022-09-05 7:34 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-31 8:15 Calling inherited primitive operations in Ada Emmanuel Briot
2022-08-31 17:11 ` DrPi
2022-08-31 19:13 ` Dmitry A. Kazakov
2022-09-01 6:56 ` Emmanuel Briot
[not found] ` <67b32db0-c4db-466c-ac13-e597e008c762n@googlegroups.com>
2022-09-01 10:02 ` Dmitry A. Kazakov
2022-09-01 11:59 ` Jeffrey R.Carter
2022-09-01 12:37 ` Dmitry A. Kazakov
2022-09-01 13:37 ` Jeffrey R.Carter
2022-09-01 14:10 ` Emmanuel Briot
2022-09-01 15:50 ` amo...@unizar.es
2022-09-01 16:03 ` Jeffrey R.Carter
2022-09-01 16:07 ` Emmanuel Briot
2022-09-01 16:17 ` Jeffrey R.Carter
2022-09-01 18:54 ` Emmanuel Briot
2022-09-01 21:33 ` Jeffrey R.Carter
2022-09-02 6:11 ` Emmanuel Briot
2022-09-02 10:55 ` Jeffrey R.Carter
2022-09-02 11:20 ` Emmanuel Briot
2022-09-02 14:28 ` Jeffrey R.Carter
2022-09-03 0:16 ` Randy Brukardt
2022-09-03 0:07 ` Randy Brukardt
2022-09-03 8:59 ` Jeffrey R.Carter
2022-09-07 0:42 ` Randy Brukardt
2022-09-03 19:00 ` Simon Wright
2022-09-05 6:56 ` Emmanuel Briot
2022-09-05 7:34 ` Dmitry A. Kazakov [this message]
2022-09-05 9:30 ` Jeffrey R.Carter
2022-09-07 0:51 ` Randy Brukardt
2022-09-02 8:35 ` amo...@unizar.es
2022-09-02 8:48 ` Dmitry A. Kazakov
[not found] ` <9484a755-f55d-407e-a40b-92421b0bcafbn@googlegroups.com>
2022-09-02 9:55 ` Dmitry A. Kazakov
2022-09-02 10:41 ` Jeffrey R.Carter
2022-09-02 11:04 ` Dmitry A. Kazakov
2022-09-03 0:12 ` Randy Brukardt
2022-09-03 8:23 ` Dmitry A. Kazakov
2022-09-03 0:01 ` Randy Brukardt
2022-09-05 8:53 ` amo...@unizar.es
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox