comp.lang.ada
 help / color / mirror / Atom feed
From: David C. Hoos, Sr. <david.c.hoos.sr@ada95.com>
To: scott@silver.jhuapl.edu
Subject: Re: Using an array of variant records
Date: 2000/01/27
Date: 2000-01-27T00:00:00+00:00	[thread overview]
Message-ID: <86qg16$ug3$1@nnrp1.deja.com> (raw)
In-Reply-To: 389089CB.85F9FF72@silver.jhuapl.edu

In article <389089CB.85F9FF72@silver.jhuapl.edu>,
  Scott Ingram <scott@silver.jhuapl.edu> wrote:
> What I would like to do is to treat a set of variant records
> as an array.  The discrimanant of the records is unconstrained,
> but I seem unable to access it when trying to initialize the
> record as element of an array.  The example below illustrates
> what I want to accomplish, but gnat complains that it expects
> a selector at the point that I want to select the discriminant.
>
> Is it possible to do what I want?
>
> procedure snake_test is
>    type snake is (garter, green);
>    type snake_health is
>       record
>          Shed : Boolean;
>          Active : Boolean;
>    end record;
>    type captive_snake (caged : Boolean := False) is
>       record
>         snake_kind : snake;
>       case caged is
>          when true =>
>             health : snake_health;
>          when others =>
>             null;
>       end case;
>    end record;
>    type snake_array is array (1..3) of captive_snake;
> S1 : snake_array;
> begin
>    for i in 1..3 loop
>       S1(i).(caged => True,
>             snake_kind => green,
>             health => (shed => true, active => true));
>    end loop;
> end snake_test;
>
> Output from gnat:
>
> Compiling: snake_test.adb (source file time stamp: 2000-01-27
18:07:28)
>     22.       S1(i).(caged => True,
>                     |
>         >>> selector expected
>
> Is there something that I have overlooked?
Yes.  The expression to the right of the dot is not a selector, but an
aggregate.

I believe you wanted :

       S1(i) := (caged      => True,
                 snake_kind => green,
                 health     => (shed => true,
                                active => true));


Sent via Deja.com http://www.deja.com/
Before you buy.




  reply	other threads:[~2000-01-27  0:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-01-27  0:00 Using an array of variant records Scott Ingram
2000-01-27  0:00 ` David [this message]
2000-01-28  0:00   ` Scott Ingram
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox