From: stt@houdini.camb.inmet.com (Tucker Taft)
Subject: Re: Two simple language questions
Date: 1998/01/07
Date: 1998-01-07T00:00:00+00:00 [thread overview]
Message-ID: <EMF47F.DEq.0.-s@inmet.camb.inmet.com> (raw)
In-Reply-To: 68uq34$7tk@tomquartz.niestu.com
Chip Richards (chipr@niestu.com) wrote:
: I hope.
: First: It says in the Intro to Ada 9X, in Chapter 2, "General access types can
: also be used to program static ragged arrays as for example a table of
: messages of different lengths." Now, I know this has been asked before, some
: time ago, but I cannot seem to locate the text of the exchange. What I want
: to know is, exactly what is the syntax for doing this? I've so far used
: allocators, i.e.:
: strs: StringArr :=
: (
: new string'("Line 1"),
: new string'("Line 2"),
: ...
: new string'("Line the Last")
: );
: Which works great, but isn't exactly the "static" ragged arrays mentioned in
: the intro.
Actually, this should work as desired if StringArr is defined
as an array of access-to-constant String. E.g.:
type String_Constant_Ptr is access constant String;
type StringArr is array(Positive range <>) of String_Constant_Ptr;
The implementation advice in the RM (13.11(24)) suggesting that
access-to-constant types need not support deallocation is meant
to encourage implementations to implement allocators for
access-to-constant types statically (presuming the initializing
value is compile-time known). In other words, new String'("Line 1")
should allocate and initialize the space at link-time, and at run-time
deliver the address of this link-time allocated and initialized
space. This is essentially identical to the implementation of string
literals in C/C++.
For what it is worth, the Ada 95 compilers based on our AdaMagic
front end (i.e. Aonix ObjectAda 7.* and Green Hills AdaMulti 95)
follow this implementation model. I'm not sure about GNAT, OCSystems,
Rational, etc.
: ...
: Chip
--
-Tucker Taft stt@inmet.com http://www.inmet.com/~stt/
Intermetrics, Inc. Burlington, MA USA
next prev parent reply other threads:[~1998-01-07 0:00 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
1998-01-07 0:00 Two simple language questions Chip Richards
1998-01-07 0:00 ` Tucker Taft [this message]
1998-01-07 0:00 ` Robert Dewar
1998-01-07 0:00 ` Matthew Heaney
1998-01-10 0:00 ` Two simple language questions (plural types) Michael F Brenner
1998-01-10 0:00 ` Robert Dewar
1998-01-10 0:00 ` Matthew Heaney
1998-01-10 0:00 ` Robert Dewar
1998-01-12 0:00 ` Anonymous
1998-01-12 0:00 ` Matthew Heaney
1998-01-12 0:00 ` Brian Rogoff
1998-01-13 0:00 ` Robert Dewar
1998-01-13 0:00 ` Distinguishing type names from other identifiers Nick Roberts
1998-01-13 0:00 ` Matthew Heaney
1998-01-14 0:00 ` Stephen Leake
1998-01-24 0:00 ` Matthew Heaney
1998-01-15 0:00 ` Anonymous
1998-01-24 0:00 ` Matthew Heaney
1998-01-24 0:00 ` Martin M Dowie
1998-01-24 0:00 ` Pred Nick Roberts
1998-01-25 0:00 ` Distinguishing type names from other identifiers Matthew Heaney
1998-01-24 0:00 ` Martin M Dowie
1998-01-15 0:00 ` Aaro Koskinen
1998-01-17 0:00 ` Martin M Dowie
1998-01-17 0:00 ` Martin M Dowie
1998-01-25 0:00 ` Matthew Heaney
1998-01-25 0:00 ` Brian Rogoff
[not found] ` <n5rs5FAStOz0Ew2+@dowie-cs.demon.co.uk>
1998-01-26 0:00 ` Brian Rogoff
1998-01-27 0:00 ` Martin M Dowie
1998-01-27 0:00 ` Brian Rogoff
1998-01-27 0:00 ` Matthew Heaney
1998-01-28 0:00 ` Brian Rogoff
1998-01-28 0:00 ` Matthew Heaney
1998-01-29 0:00 ` Brian Rogoff
1998-01-30 0:00 ` Mats Weber
1998-01-28 0:00 ` Martin M Dowie
1998-01-12 0:00 ` Two simple language questions (plural types) Brian Rogoff
1998-01-11 0:00 ` Brian Rogoff
1998-01-07 0:00 ` Two simple language questions Dale Stanbrough
-- strict thread matches above, loose matches on Subject: below --
1998-01-07 0:00 tmoran
1998-01-07 0:00 ` Matthew Heaney
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox