From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Discriminant of a limited type object
Date: Tue, 27 Feb 2018 23:53:04 +0100
Date: 2018-02-27T23:53:04+01:00 [thread overview]
Message-ID: <p74nge$1oto$1@gioia.aioe.org> (raw)
In-Reply-To: p74lj6$ls3$1@franka.jacob-sparre.dk
On 2018-02-27 23:20, Randy Brukardt wrote:
> A defaulted discriminant for a limited type means just that: a default for
> the discriminant if the object is default initialized. It was always a
> mistake for Ada to tie that to mutability, but it doesn't matter for a
> limited type.
>
> You can initialize an array of limited discriminanted objects with an
> aggregate of function calls (since those are built-in-place), and they can
> all have different discriminant values.
The problem is passing state between calls to the function. The code in
mind is a loop over array elements. The loop body gutted and its parts
moved into the function.
A : T (1..N);
begin
for Index in A'Range loop
do-init of A (Index)
end loop;
|
V
Index : Positive := 1;
function F return Element is
begin
Index := Index + 1;
return do-init of A (Index - 1);
end F;
A : T (1..N) := (others => F)
Quite ugly. In the end I decided to flatten record variants and make the
discriminant a plain record member. The memory loss is not big enough to
justify the code above.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2018-02-27 22:53 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-27 17:54 Discriminant of a limited type object Dmitry A. Kazakov
2018-02-27 22:20 ` Randy Brukardt
2018-02-27 22:53 ` Dmitry A. Kazakov [this message]
2018-02-28 6:36 ` J-P. Rosen
2018-02-28 8:42 ` Dmitry A. Kazakov
2018-02-28 9:07 ` J-P. Rosen
2018-02-28 17:16 ` Jeffrey R. Carter
2018-02-28 23:10 ` Randy Brukardt
2018-03-01 8:43 ` Dmitry A. Kazakov
2018-03-01 22:00 ` Randy Brukardt
2018-03-02 10:30 ` 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