From: Jerry <list_email@icloud.com>
Subject: How to access an array using two different indexing schemes
Date: Fri, 24 Nov 2017 03:42:06 -0800 (PST)
Date: 2017-11-24T03:42:06-08:00 [thread overview]
Message-ID: <d8c0ce45-97ad-4475-b3f9-1662a875a576@googlegroups.com> (raw)
I want to access an array such as Real_Vector (built-in for Ada >= 2005) with two different indexing schemes. For example, I would access a Real_Vector indexed (0 .. 4) when thinking of it as a times series and the same data indexed (1 .. 5) when thinking of it as a vector. Another application would be a vector indexed (-128 .. 127) because it fits my problem domain, perhaps a spatial variable, but I need to index it as (0 .. 255) when thinking of doing a Fast Fourier Transform on it.
I could declare two arrays such as
x : Real_Vector(0 .. 4);
y : Real_Vector(1 .. 5);
Ada then allows the assignments
y := x;
and
x := y;
but this has two problems. First, I have wasted memory and cycles by declaring y and copying x into it. Second, I would then have a kind of version control problem where every time I modified one, I have to copy it to the other.
I have the notion that I should be able to accomplish this using pointers but I can’t seem to crack how do to this. I’ve tried all sorts of things and am resigned to doing the above duplication if I have to. (My arrays can be _much_ larger so the overhead might be significant. They might also be two-dimensional, as in Real_Matrix or Complex_Matrix.)
I'm currently looking at System.Address_To_Access_Conversions but I thought I would query the list in the meantime.
Any ideas?
Thanks,
Jerry
next reply other threads:[~2017-11-24 11:42 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-24 11:42 Jerry [this message]
2017-11-24 12:33 ` How to access an array using two different indexing schemes 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
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