From: Jerry <list_email@icloud.com>
Subject: Re: How to access an array using two different indexing schemes
Date: Thu, 30 Nov 2017 15:13:12 -0800 (PST)
Date: 2017-11-30T15:13:12-08:00 [thread overview]
Message-ID: <304b7ec5-7d43-4fb3-9a61-d92cf4ea6b8e@googlegroups.com> (raw)
In-Reply-To: <ovpuf5$94f$1@franka.jacob-sparre.dk>
On Thursday, November 30, 2017 at 2:50:31 PM UTC-7, Randy Brukardt wrote:
>
> The only thing that does work is the type conversion in parameter passing
> (as I originally illustrated). So something like the following should work
> (should because I didn't try it):
>
The type conversion at the subroutine level also works for an open array in the formal argument. The following uses an array which is accessed by an access variable--the "usual" declaration method also works, i.e,. if x is declared as
x : Real_Vector(-4 .. 3);
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Numerics.Long_Real_Arrays; use Ada.Numerics.Long_Real_Arrays;
procedure Randy_V3 is
type Real_Vector_Access is access Real_Vector;
x_Ptr : Real_Vector_Access := new Real_Vector(-4 .. 3);
x : Real_Vector renames x_Ptr.all;
subtype RV0_7 is Real_Vector(0..7);
procedure Do_X(x : in out Real_Vector) is
begin
for i in x'range loop
x(i) := x(i) + 0.1;
Put_Line(i'img & " " & x(i)'img);
end loop;
end Do_X;
procedure Do_Y(y : in out RV0_7) is
begin
for i in y'range loop
y(i) := y(i) + 0.2;
Put_Line(i'img & " " & y(i)'img);
end loop;
end Do_Y;
procedure Do_Y_Open(y : in out Real_Vector) is
begin
for i in y'range loop
y(i) := y(i) + 0.3;
Put_Line(i'img & " " & y(i)'img);
end loop;
end Do_Y_Open;
begin
x := (-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0);
Do_X(x);
New_Line;
Do_Y(RV0_7(x));
New_Line;
Do_Y_Open(RV0_7(x));
end Randy_V3;
-4 -3.90000000000000E+00
-3 -2.90000000000000E+00
-2 -1.90000000000000E+00
-1 -9.00000000000000E-01
0 1.00000000000000E-01
1 1.10000000000000E+00
2 2.10000000000000E+00
3 3.10000000000000E+00
0 -3.70000000000000E+00
1 -2.70000000000000E+00
2 -1.70000000000000E+00
3 -7.00000000000000E-01
4 3.00000000000000E-01
5 1.30000000000000E+00
6 2.30000000000000E+00
7 3.30000000000000E+00
0 -3.40000000000000E+00
1 -2.40000000000000E+00
2 -1.40000000000000E+00
3 -4.00000000000000E-01
4 6.00000000000000E-01
5 1.60000000000000E+00
6 2.60000000000000E+00
7 3.60000000000000E+00
Jerry
next prev parent reply other threads:[~2017-11-30 23:13 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-24 11:42 How to access an array using two different indexing schemes Jerry
2017-11-24 12:33 ` Jeffrey R. Carter
2017-11-24 15:52 ` AdaMagica
2017-11-24 22:25 ` Jerry
2017-11-25 13:57 ` AdaMagica
2017-11-24 22:23 ` Jerry
2017-11-25 15:39 ` Robin
2017-11-25 20:58 ` Jerry
2017-11-26 10:22 ` Robin
2017-11-28 21:57 ` G. B.
2017-11-24 17:37 ` A. Cervetti
2017-11-24 21:48 ` Jerry
2017-11-24 22:15 ` Robert A Duff
2017-11-24 23:38 ` Jerry
2017-11-26 1:07 ` Jerry
2017-11-26 8:58 ` Dmitry A. Kazakov
2017-11-26 10:31 ` Jerry
2017-11-28 1:31 ` Randy Brukardt
2017-11-28 1:25 ` Randy Brukardt
2017-11-29 4:57 ` Jerry
2017-11-29 15:01 ` AdaMagica
2017-11-29 15:21 ` AdaMagica
2017-11-30 5:32 ` Jerry
2017-11-30 5:30 ` Jerry
2017-11-29 15:03 ` AdaMagica
2017-11-29 20:53 ` Randy Brukardt
2017-11-29 16:03 ` Shark8
2017-11-29 17:04 ` AdaMagica
2017-11-29 20:56 ` Randy Brukardt
2017-11-30 5:56 ` Jerry
2017-11-30 11:11 ` AdaMagica
2017-11-30 11:40 ` AdaMagica
2017-11-30 14:47 ` Niklas Holsti
2017-11-30 17:30 ` AdaMagica
2017-11-30 19:31 ` G. B.
2017-11-30 19:43 ` Shark8
2017-11-30 22:10 ` Randy Brukardt
2017-11-30 21:57 ` Randy Brukardt
2017-11-30 22:49 ` Jerry
2017-11-30 23:00 ` Jerry
2017-11-30 21:50 ` Randy Brukardt
2017-11-30 23:13 ` Jerry [this message]
2017-11-24 18:37 ` Per Sandberg
2017-11-24 21:28 ` Jerry
2017-11-24 21:40 ` Dmitry A. Kazakov
2017-11-28 1:33 ` Randy Brukardt
2017-11-24 22:12 ` Robert A Duff
2017-11-28 1:39 ` Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox