comp.lang.ada
 help / color / mirror / Atom feed
From: "Nick Roberts" <nickroberts@blueyonder.co.uk>
Subject: Re: for x'address or variant
Date: Sun, 20 Apr 2003 17:19:54 +0100
Date: 2003-04-20T17:19:54+01:00	[thread overview]
Message-ID: <b7uhb9$4lb72$1@ID-25716.news.dfncis.de> (raw)
In-Reply-To: b7u1jh$p6k$1@news.onet.pl

"kat-Zygfryd" <6667@wp.pl> wrote in message
news:b7u1jh$p6k$1@news.onet.pl...

> I have a tiny problem, I want to have a structure:

> type P is access X;
> type X is record
>     next: array(1..2) of P;
>     left: P;
>     right: P;
> end record;

> wherein the left component uses next(1)'address
> and right component uses next(2)'address,
> unfortunately "for x'address use" statements are
> not allowed within record declarations, and
> variant records don't allow me to access both
> next and left/right exchangably. do you know a way
> to work this out?

Declare the following:

    type Node;
    type Node_Ref is access Node;
    type Leaf_Direction is (Left, Right);
    type Leaf_Pair is array (Leaf_Direction) of Node_Ref;
    type Node is
        record
            Payload: ...;
            Leaves: Leaf_Pair;
        end record;

Now you can reference, for example, the left leaf an object X1 of type Node
by:

    X1.Leaves(Left).all

You can cycle through all the leaves of X1 by:

    for L in Leaf_Direction loop
        ... X1.Leaves(L).all ...
    end loop;

I hope this solves the problem. Say if it doesn't.

--
Nick Roberts
Jabber: debater@charente.de [ICQ: 159718630]






  parent reply	other threads:[~2003-04-20 16:19 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-04-20 11:50 for x'address or variant kat-Zygfryd
2003-04-20 14:05 ` James S. Rogers
2003-04-20 15:17 ` Steve
2003-04-20 16:19 ` Nick Roberts [this message]
2003-04-20 16:57   ` kat-Zygfryd
2003-04-20 16:17     ` Simon Wright
2003-04-20 18:07       ` kat-Zygfryd
2003-04-20 19:39         ` Robert A Duff
2003-04-20 21:17           ` kat-Zygfryd
2003-04-21  2:25             ` John R. Strohm
2003-04-21 10:26               ` kat-Zygfryd
2003-04-21 12:59                 ` Robert A Duff
2003-04-21 16:29                   ` kat-Zygfryd
2003-04-21 17:25                     ` tmoran
2003-04-21 19:48                     ` Robert A Duff
2003-04-21 20:12                       ` kat-Zygfryd
2003-04-21 20:55                         ` Robert A Duff
2003-04-22 12:02                         ` John R. Strohm
replies disabled

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