From: Emmanuel Briot <briot.emmanuel@gmail.com>
Subject: Re: Calling inherited primitive operations in Ada
Date: Thu, 1 Sep 2022 11:54:00 -0700 (PDT) [thread overview]
Message-ID: <dad4c041-142f-4bb3-a51e-d7236996c529n@googlegroups.com> (raw)
In-Reply-To: <teqlu3$27mlk$1@dont-email.me>
I think I have a more interesting example. This one is extracted from my attempted traits containers, for which I had published a blog post at AdaCore. My enhanced fork of the library is at
https://github.com/briot/ada-traits-containers
if someone wants to experiment with non-trivial generics code (and containers are of course a case where generics fully make sense).
Here is the example:
generic
type Element_Type is private;
type Stored_Type is private;
package Elements is
end Elements;
with Elements;
generic
type Element_Type is private;
package Definite_Elements is
package Traits is new Elements (Element_Type, Stored_Type => Element_Type);
end Definite_Elements;
with Definite_Elements;
generic
type Key_Type is private;
package Maps is
package Keys is new Definite_Elements (Key_Type);
function "=" (L, R : Keys.Traits.Stored_Type) return Boolean -- "Stored_Type" is not a visible entity of "Traits"
is (False);
end Maps;
This is not case where the actual is visible unless I happen to know how Definite_Element is implemented and that it will use Element_Type for Stored_Type (and this is not a knowledge I wish client packages to have, the whole point of Element and Definite_Element is to basically hide how elements can be stored in a container, and whether we need memory allocation for instance).
next prev parent reply other threads:[~2022-09-01 18:54 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 [this message]
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
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