From: "Steven Deller" <deller@smsail.com>
To: <comp.lang.ada@ada.eu.org>
Subject: RE: ada vs. cpp
Date: Tue, 9 Oct 2001 12:14:53 -0400
Date: 2001-10-09T12:14:53-04:00 [thread overview]
Message-ID: <mailman.1002644250.11312.comp.lang.ada@ada.eu.org> (raw)
In-Reply-To: <NeEw7.184211$w7.28259655@news02.optonline.net>
> -----Original Message-----
> From: comp.lang.ada-admin@ada.eu.org
> [mailto:comp.lang.ada-admin@ada.eu.org]On Behalf Of Mike Mohr
> ...
> By all accounts I am a new Ada programmer, so I am a little confused
> by the syntax. It isn't clear to me how Code, and Arg function in the
> expression.
>
> Do strings effectively have a ( ) operator which takes a range as an
> argument?
>
> I read V1 (Arg) as V1.substring(Arg) in pseudo code.
>
> Arg seems to be a value rather than a type.
> Is range effectively a parameterized type?
The range constraints of Arg have values. Arg is a subtype.
When referring to an array:
The form
Array_Name(X)
-- where X is an object whose type matches the array's index type
means element X of Array_Name.
The form
Array_Name(X..Y) ;
-- where X and Y are objects and
-- their types match that of the array's index type
means the elements of Array_Name starting with X and ending with Y.
This is called array slicing.
The form
Array_Name(Subtype) ;
-- where Subtype is a subtype of the array's index type
means the elements of the array bounded by the Subtype range.
Another way to express array slicing.
>From the Ada Reference Manual 3.6.1 Index Constraints and Discrete Ranges
(2)
index_constraint ::= (discrete_range {, discrete_range})
(3)
discrete_range ::= discrete_subtype_indication | range
The way I look at it is that when indexing an array,
subtype_name
is a shorthand for
subtype_name'range
Not everyone would agree with how I look at it :-).
> Perhaps this is wrong, if so please show me what is
> really happening. If my guess is accurate please show
> me how static/dynamic checking would be done in the
> first (Ada) case. What I want is a description or
> examples of those cases which would raise an error.
>
> You also point out that
>
> "There is nothing equivalent in C++ to declaring a new
> type integer with restricted range"
>
> I understand your point, yet it isn't clear to me in the
> original example, what specifically is an integer.
The integer comes in by the definition within Standard of a "string":
-- Declarations from "Standard" -- always "part" of a unit
subtype Positive is Integer range 1 .. Integer'Last;
type String is array(Positive range <>) of Character;
An example that will raise a constraint_error is:
-- Application code
V1 : constant string := "abcdefghij" ; -- Has range 1..10 per ARM
subtype Code is Positive range 1 .. 4 ;
subtype Arg is Positive range 6 .. 8 ;
V2 : constant String := V1 (Arg) & '-' & V1 (Code);
-- No problem, ranges are within 1..10
subtype Bad is Positive range 4 .. 11 ;
V3 : constant String := V1(Bad) ;
-- Raises constraint error because 11 is outside 1..10
This is contrived and will always raise a constraint_error. But if V1 were
read in at run-time, then its length would vary, with the possibility that
if the entry was too short, then the creation of V3 would raise a
constraint_error, but not if it was long enough (run-time checking).
Regards,
Steve
"Then, after a second or so, nothing continued to happen."
Steven Deller Smooth Sailing LLC
410 757 6924 deller@smsail.com
next prev parent reply other threads:[~2001-10-09 16:14 UTC|newest]
Thread overview: 148+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-03 20:42 ada vs. cpp Ralph M�ritz
2001-10-03 20:56 ` Preben Randhol
2001-10-03 21:07 ` Ralph M�ritz
2001-10-04 5:08 ` Pi
2001-10-04 5:07 ` Ed Falis
2001-10-04 5:13 ` David Starner
2001-10-04 10:57 ` Preben Randhol
2001-10-04 13:18 ` Marin David Condic
2001-10-04 16:30 ` Pascal Obry
2001-10-04 17:05 ` Marin David Condic
2001-10-05 15:22 ` Mike Mohr
2001-10-06 9:15 ` Pascal Obry
2001-10-06 11:23 ` MM
2001-10-06 12:27 ` Marc A. Criley
2001-10-06 16:53 ` James Rogers
2001-10-09 13:51 ` Marin David Condic
2001-10-09 14:13 ` James Rogers
2001-10-09 14:25 ` Marin David Condic
2001-10-10 16:46 ` Warren W. Gay VE3WWG
2001-10-09 15:10 ` Robert*
2001-10-09 16:17 ` James Rogers
2001-10-11 12:03 ` David Botton
2001-10-09 14:43 ` Robert*
2001-10-09 15:18 ` Wes Groleau
2001-10-09 18:21 ` Marin David Condic
2001-10-09 20:37 ` James Rogers
2001-10-09 16:21 ` James Rogers
2001-10-09 16:43 ` Lutz Donnerhacke
2001-10-10 5:18 ` Richard Riehle
2001-10-10 13:21 ` Marin David Condic
2001-10-10 14:15 ` Wes Groleau
2001-10-22 2:07 ` David Thompson
2001-10-22 13:35 ` Wes Groleau
2001-10-22 19:14 ` Ole-Hjalmar Kristensen
2001-10-23 5:40 ` Richard Riehle
2001-10-09 15:06 ` Ole-Hjalmar Kristensen
[not found] ` <9pv2f20jf4@drn.newsguy <3BC3240B.96703A8B@worldnet.att.net>
2001-10-10 5:47 ` Simon Wright
2001-10-06 22:38 ` Frode Tennebø
2001-10-06 23:48 ` mike
2001-10-07 7:31 ` Pascal Obry
2001-10-08 14:55 ` Mike Mohr
2001-10-08 15:07 ` Mike Mohr
2001-10-08 16:34 ` Robert*
2001-10-08 17:47 ` Mike Mohr
2001-10-08 18:38 ` Robert*
2001-10-09 14:56 ` Mike Mohr
2001-10-09 15:20 ` Wes Groleau
2001-10-09 16:14 ` Steven Deller [this message]
2001-10-09 16:55 ` Pascal Obry
2001-10-08 19:19 ` James Rogers
2001-10-09 8:17 ` Pascal Obry
2001-10-09 15:46 ` Ted Dennison
2001-10-09 17:35 ` Mike Mohr
2001-10-09 18:45 ` Ted Dennison
2001-10-08 18:02 ` Ted Dennison
2001-10-09 4:59 ` David Thompson
2001-10-04 13:16 ` Ted Dennison
2001-10-05 7:50 ` Dmitry Kazakov
2001-10-05 13:31 ` David Starner
2001-10-05 15:34 ` Ted Dennison
2001-10-05 17:49 ` David Starner
2001-10-05 18:54 ` Wes Groleau
2001-10-05 22:02 ` James Rogers
2001-10-05 22:35 ` Wes Groleau
2001-10-06 3:44 ` David Starner
2001-10-08 8:18 ` Dmitry Kazakov
2001-10-08 13:33 ` David Starner
2001-10-09 13:36 ` Wes Groleau
2001-10-09 15:29 ` David Starner
2001-10-10 11:01 ` Dmitry Kazakov
2001-10-10 11:20 ` Lutz Donnerhacke
2001-10-10 12:14 ` Robert*
2001-10-10 13:31 ` Lutz Donnerhacke
2001-10-10 14:36 ` Steven Deller
2001-10-10 14:59 ` Wes Groleau
2001-10-10 15:15 ` Lutz Donnerhacke
2001-10-10 15:16 ` Dmitry Kazakov
2001-10-10 16:10 ` Florian Weimer
2001-10-11 8:02 ` Dmitry Kazakov
2001-10-10 15:59 ` Brian Rogoff
2001-10-10 18:50 ` David Starner
2001-10-11 9:28 ` Lutz Donnerhacke
2001-10-10 14:03 ` David Starner
2001-10-10 16:40 ` Ted Dennison
2001-10-10 17:53 ` Pascal Obry
2001-10-10 23:11 ` David Starner
2001-10-11 3:00 ` James Rogers
2001-10-22 2:10 ` David Thompson
2001-10-05 13:52 ` James Rogers
2001-10-05 14:28 ` Larry Kilgallen
2001-10-05 14:07 ` Ted Dennison
2001-10-16 4:52 ` David Thompson
2001-10-16 10:21 ` Dmitry Kazakov
2001-11-13 2:12 ` David Thompson
2001-11-13 10:21 ` Dmitry A. Kazakov
2001-11-13 16:05 ` Ted Dennison
2001-11-14 9:29 ` Dmitry A. Kazakov
2001-10-04 6:01 ` mike
2001-10-04 8:42 ` Pi
2001-10-04 12:22 ` James Rogers
2001-10-04 17:50 ` perl Warren W. Gay VE3WWG
2001-10-04 19:27 ` perl maa
2001-10-05 12:15 ` perl Georg Bauhaus
2001-10-04 19:28 ` perl Larry Kilgallen
2001-10-05 7:24 ` perl Lutz Donnerhacke
2001-10-05 12:38 ` perl Georg Bauhaus
2001-10-06 19:00 ` perl Florian Weimer
2001-10-04 16:26 ` ada vs. cpp Pascal Obry
2001-10-04 18:47 ` David Botton
2001-10-04 22:29 ` Jacob Sparre Andersen
2001-10-04 22:31 ` Wes Groleau
2001-10-04 22:52 ` Preben Randhol
2001-10-05 12:43 ` Georg Bauhaus
2001-10-05 13:09 ` Preben Randhol
2001-10-06 1:05 ` Mike Silva
2001-10-04 13:50 ` Ted Dennison
2001-10-03 21:03 ` Marin David Condic
2001-10-04 2:40 ` Jeff
2001-10-05 1:23 ` Adrian Hoe
2001-10-05 4:34 ` mike
2001-10-05 4:42 ` mike
2001-10-05 11:13 ` Adrian Hoe
-- strict thread matches above, loose matches on Subject: below --
2001-10-12 20:54 Richard Pinkall-Pollei
2001-10-12 21:28 ` Vector..
2001-10-13 7:07 ` Dale Stanbrough
2001-10-14 8:15 ` Jean-Marc Bourguet
2001-10-15 10:04 ` Nexus
2001-10-15 12:18 ` Lutz Donnerhacke
2001-10-15 21:25 ` Florian Weimer
2001-10-22 2:08 ` David Thompson
2001-10-22 7:04 ` Florian Weimer
2001-10-22 7:31 ` Lutz Donnerhacke
2001-11-13 2:12 ` David Thompson
2001-10-16 8:47 ` Jean-Marc Bourguet
2001-10-16 10:08 ` Lutz Donnerhacke
2001-10-16 11:07 ` Jean-Marc Bourguet
2001-10-16 12:00 ` Lutz Donnerhacke
2001-10-16 19:08 ` Darren New
2001-10-16 15:46 ` Florian Weimer
2001-10-16 19:31 ` Stephen Leake
2001-10-16 20:13 ` Florian Weimer
2001-10-16 21:42 ` Stephen Leake
2001-10-17 8:37 ` Florian Weimer
2001-10-17 8:45 ` Lutz Donnerhacke
2001-10-16 13:45 ` Ted Dennison
2001-10-16 13:54 ` Jean-Marc Bourguet
2001-10-16 13:54 ` Lutz Donnerhacke
2001-10-15 13:44 ` Marin David Condic
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox