comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm-host.bauhaus@maps.futureapps.de>
Subject: Re: initialize an array (1-D) at elaboration using an expression based on the index?
Date: Thu, 11 Nov 2010 02:07:39 +0100
Date: 2010-11-11T02:07:40+01:00	[thread overview]
Message-ID: <4cdb41db$0$6980$9b4e6d93@newsspool4.arcor-online.net> (raw)
In-Reply-To: <82e746ff-a4eb-4570-8016-78930977def1@35g2000prb.googlegroups.com>

On 11/10/10 4:51 PM, Adam Beneschan wrote:

>>     Jobs : array (Job_Id) of T := (for D in Job_Id =>  ???(D));
>>
>> ...

> ... But I think you can set up a function:
>
>     function Task_With_ID (Identity : Job_ID := No_Job) return T is
>     begin
>        return X : T(Identity);
>     end;
>
> and use that in your aggregate:
>
>     Single_Job : aliased Rec := (Task_With_ID(J), null);
>
> Warning: I have not tried this.

Tested with GNAT GPL 2010, it works.  In particular,

    Jobs : array (Job_Id) of T := (others => Make);

works, where construction function Make advances Job_Id
values for T's discriminant internally.  The setup is less
static, though.   The (for ...) syntax
will leave little doubt as to which index values Make
(or something in its place) is using to produce a T object.
That is not obvious  now.
(All as long a T can have a default discriminant.)

Just an ad-hoc idea:

    Jobs : array (X: Job_Id) of T := (others => Make(X));

where X: Job_Id is a little like a record discriminant
passed on to constrain components, for example,
only with a different "multiplicity".



  parent reply	other threads:[~2010-11-11  1:07 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-15 23:03 initialize an array (1-D) at elaboration using an expression based on the index? Nasser M. Abbasi
2010-10-15 23:31 ` Vinzent Hoefler
2010-10-16  0:16   ` Adam Beneschan
2010-10-16  0:29     ` Nasser M. Abbasi
2010-10-16  1:47       ` Robert A Duff
2010-10-16  1:01     ` Randy Brukardt
2010-10-16 10:08     ` Phil Clayton
2010-10-18 15:03       ` Adam Beneschan
2010-10-19  6:29         ` Randy Brukardt
2010-10-20 20:01         ` Phil Clayton
2010-10-19 16:34     ` Britt Snodgrass
2010-10-19 18:05       ` Jeffrey Carter
2010-10-19 19:00         ` Vinzent Hoefler
2010-11-10 14:33     ` Georg Bauhaus
2010-11-10 15:51       ` Adam Beneschan
2010-11-10 17:19         ` Dmitry A. Kazakov
2010-11-10 18:03           ` Adam Beneschan
2010-11-11  1:07         ` Georg Bauhaus [this message]
2010-11-11  8:30           ` Dmitry A. Kazakov
2010-11-11 12:02           ` Robert A Duff
2010-11-11 14:19             ` Georg Bauhaus
2010-10-16  0:52 ` Jeffrey Carter
2010-10-16  0:54 ` Gene
2010-10-16  1:11   ` Vinzent Hoefler
2010-10-21 13:44 ` Chad  R. Meiners
2010-10-24 16:40   ` Shark8
2010-10-24 22:48     ` Phil Clayton
2010-10-25  2:23       ` Shark8
2010-10-29 23:26         ` Phil Clayton
2010-10-31 18:47           ` Shark8
2010-10-31 21:59             ` Georg Bauhaus
2010-11-01  0:45             ` Phil Clayton
2010-11-01  1:55               ` Shark8
2010-10-30  6:34         ` Brian Drummond
2010-10-31 19:00           ` Shark8
2010-10-31 18:09             ` (see below)
2010-10-31 19:35               ` Shark8
2010-10-31 22:47                 ` (see below)
2010-11-01  0:07                   ` Shark8
2010-10-31 23:21                     ` (see below)
2010-10-31 21:26             ` Brian Drummond
2010-11-12 18:10             ` 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