From: Jean-Pierre Rosen <rosen@adalog.fr>
Subject: Re: Ranges and (non)static constraints
Date: Thu, 16 Nov 2006 18:18:47 +0100
Date: 2006-11-16T18:18:47+01:00 [thread overview]
Message-ID: <uh6ije.uoh.ln@hunter.axlog.fr> (raw)
In-Reply-To: <1pqs0gcno5o2t.1195tm9yap28b.dlg@40tude.net>
Dmitry A. Kazakov a �crit :
> On Thu, 16 Nov 2006 12:02:15 +0100, Maciej Sobczak wrote:
>
>> type T is range 1 .. N;
>> type U is new Integer range 1 .. M;
>>
>> N must be static, but M does not have to.
>> Why and what is the real difference between T and U?
>
> Informally, the second is an abbreviation for:
>
> type <anonymous> is new Integer;
> subtype U is <anonymous> range 1..M;
>
> so "range" refers to a subtype. On the contrary, in the first, "range"
> refers a type. So the difference.
>
> Is it real? I don't think so.
Sorry, but there is a huge difference. With U, the range cannot be
outside the range of Integer, under penalty of Constraint_Error. T is
valid as long as the compiler offers a big enough integer type, and if
it doesn't, it won't compile.
Actually, the second form should never be used: you are relying on
Integer, a non-portable type that plays absolutely (or almost) no
special role in Ada. Why derive from Integer, rather than from
Long_Integer, or anything else?
If you want dynamic bounds, remember that anything "dynamic" has to have
an upper limit at some point. It is thus better to write:
type Biggest_T is range 1 .. Absolute_Max_Expectable_Value;
subtype T is Biggest_T range 1 .. N;
--
---------------------------------------------------------
J-P. Rosen (rosen@adalog.fr)
Visit Adalog's web site at http://www.adalog.fr
next prev parent reply other threads:[~2006-11-16 17:18 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-16 11:02 Ranges and (non)static constraints Maciej Sobczak
2006-11-16 12:23 ` Martin Krischik
2006-11-16 13:23 ` Maciej Sobczak
2006-11-16 19:01 ` Jeffrey R. Carter
2006-11-18 0:02 ` Robert A Duff
2006-11-16 13:13 ` Dmitry A. Kazakov
2006-11-16 17:18 ` Jean-Pierre Rosen [this message]
2006-11-17 9:08 ` Dmitry A. Kazakov
2006-11-17 10:30 ` Stuart
2006-11-17 10:37 ` Jean-Pierre Rosen
2006-11-17 14:57 ` Dmitry A. Kazakov
2006-11-17 16:04 ` Jean-Pierre Rosen
2006-11-18 9:51 ` Dmitry A. Kazakov
2006-11-18 14:17 ` Stephen Leake
2006-11-17 20:05 ` Jeffrey R. Carter
2006-11-17 23:58 ` Robert A Duff
2006-11-18 9:47 ` Dmitry A. Kazakov
2006-11-19 2:27 ` Jeffrey R. Carter
2006-11-19 12:13 ` Björn Persson
2006-11-19 22:51 ` Robert A Duff
2006-11-20 3:51 ` Jeffrey R. Carter
2006-11-21 21:02 ` Robert A Duff
2006-11-20 17:35 ` Adam Beneschan
2006-11-17 15:45 ` Maciej Sobczak
2006-11-17 16:45 ` Jean-Pierre Rosen
2006-11-17 10:39 ` AW: " Grein, Christoph (Fa. ESG)
2006-11-17 11:20 ` Dmitry A. Kazakov
2006-11-17 13:30 ` Stuart
2006-11-17 15:07 ` Dmitry A. Kazakov
2006-11-17 16:47 ` Jean-Pierre Rosen
2006-11-20 14:08 ` Stuart
2006-11-20 14:12 ` Stuart
2006-11-20 15:48 ` Dmitry A. Kazakov
2006-11-16 18:56 ` Jeffrey R. Carter
2006-11-16 20:00 ` Adam Beneschan
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox