From: "Stuart" <stuart@0.0>
Subject: Re: how to import a package
Date: Thu, 7 Dec 2006 09:32:11 -0000
Date: 2006-12-07T09:32:11+00:00 [thread overview]
Message-ID: <4577dc92$1_1@glkas0286.greenlnk.net> (raw)
In-Reply-To: sa4veko5ndy.fsf@margay.local
"Brian May" <bam@snoopy.apana.org.au> wrote in message
news:sa4veko5ndy.fsf@margay.local...
>>>>>> "markww" == markww <markww@gmail.com> writes:
> Going back in time, you said you defined Next_Rec as:
>
> type Node;
> type Node_Ptr is access Node;
> type Node is record
> Data : T;
> Prev_Rec : access Node;
> Next_Rec : access Node;
> end record;
>
> Note that "access Node" is not the same thing as "Node_Ptr".
>
> From memory the first is an "anonymous access type", but my memory is
> a bit rusty on this topic right now (Ada 2005 feature when used in a
> record?).
Ada is very particular about type matching and this can lead to some
consequences that, at first, appear very odd.
If you look at this example:
package P is
pragma Elaborate_Body(P); -- Allow a package body to exist!
end P;
package body P is
type T is array(0..5) of integer;
A, B : array(0..5) of integer;
C, D : T;
begin
A := B;
-- Not allowed because types don't match!
C := D;
-- Types match!
end P;
Even though A and B appear in the same statement, they are of different
anonymous types. This is because
A, B : array(0..5) of integer;
is equivalent to
A : array(0..5) of integer;
B : array(0..5) of integer;
and, as you may already have realized, homographs are not treated as being
the same in Ada.
However, both C and D are of the same named type - even though the type T
has an anonymous type as an index range. I think it is better to avoid
anonymous types - so the declaration of T might be better written as:
type T_index is range 0..5;
type T is array(T_index) of integer;
--
Stuart
next prev parent reply other threads:[~2006-12-07 9:32 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-06 2:14 how to import a package markww
2006-12-06 3:06 ` Adam Beneschan
2006-12-06 3:34 ` markww
2006-12-06 9:18 ` Simon Wright
2006-12-06 19:47 ` Jeffrey R. Carter
2006-12-06 23:56 ` markww
2006-12-07 1:18 ` Björn Persson
2006-12-07 1:26 ` Brian May
2006-12-07 4:14 ` markww
2006-12-07 4:40 ` Brian May
2006-12-07 9:32 ` Stuart [this message]
2006-12-07 11:21 ` Jean-Pierre Rosen
2006-12-11 6:16 ` markww
2006-12-11 6:50 ` markww
2006-12-11 9:40 ` Georg Bauhaus
2006-12-11 14:19 ` markww
2006-12-11 15:03 ` Dmitry A. Kazakov
2006-12-11 16:22 ` Adam Beneschan
2006-12-11 20:28 ` Jeffrey R. Carter
2006-12-12 3:19 ` markww
2006-12-12 3:31 ` Jeffrey R. Carter
2006-12-12 9:03 ` Stuart
2006-12-12 10:56 ` Georg Bauhaus
2006-12-11 7:00 ` Simon Wright
2006-12-07 4:06 ` Jeffrey R. Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox