From: Tucker Taft <stt@averstar.com>
Subject: Re: Ragged Array Proposal
Date: 1999/09/23
Date: 1999-09-23T00:00:00+00:00 [thread overview]
Message-ID: <37EA4E91.1D4D1FC@averstar.com> (raw)
In-Reply-To: m3vh922o3u.fsf@vault80.infomatch.bc.ca
Ray Blaak wrote:
>
> Ted Dennison <dennison@telepath.com> writes:
> > Also for your example you say "the various ways of doing the equivalent
> > thing in Ada 95 are all unappealing." I but I can do the equivalent
> > thing in Ada 95 in only 2 more lines of code:
> >
> > type Command_String_Ptr is access all String;
> > for Command_String_Ptr'Storage_Size use 1024;
> >
> > type Command is (Cut, Copy, Paste, ...);
> >
> > Labels: constant array (Command) of Command_String_Ptr :=
> > (Cut => new String'("Cu&t"),
> > Copy => new String'("&Copy"),
> >
> > Paste => new String'("&Paste"),
> > ...);
>
> The problem with this approach is that the data is duplicated. It is both in
> the static data area of the program (i.e. the string constants), and in the
> heap.
If you change Command_String_Ptr to be "access constant String;" then
the recommended implementation does *not* duplicate the static data.
It is link-time allocated and initialized. This might vary by compiler,
but anything having to do with link-time initialization is an "optimization,"
so that is true even for static constants. I know at least that the
Aonix and Green Hills Ada 95 compilers statically allocate and initialize
allocators for access-to-constant types. I haven't checked GNAT.
> In Ada95, to avoid duplicating the data, the approach is tedious (i.e. having
> an aliased constant for each string, and assigning their 'Access values into
> the array).
As mentioned above, that is not necessary if the type is access-to-constant
(which it must be if you are using 'Access on aliased constants).
Take a look at the generated code for new String'("xxx") when the type
is access-to-constant. It should not involve any run-time code (presuming
the implementation advice was followed by the compiler implementor).
> > --
> Cheers, The Rhythm is around me,
> The Rhythm has control.
> Ray Blaak The Rhythm is inside me,
> blaak@infomatch.com The Rhythm has my soul.
--
-Tucker Taft stt@averstar.com http://www.averstar.com/~stt/
Technical Director, Distributed IT Solutions (www.averstar.com/tools)
AverStar (formerly Intermetrics, Inc.) Burlington, MA USA
next prev parent reply other threads:[~1999-09-23 0:00 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <37e7c08e@eeyore.callnetuk.com>
1999-09-22 0:00 ` Ragged Array Proposal Ted Dennison
1999-09-22 0:00 ` Ray Blaak
1999-09-23 0:00 ` Tucker Taft [this message]
1999-09-23 0:00 ` Nick Roberts
1999-09-23 0:00 ` Hyman Rosen
1999-09-24 0:00 ` Nick Roberts
1999-09-24 0:00 ` Hyman Rosen
1999-09-25 0:00 ` Robert Dewar
1999-09-27 0:00 ` Hyman Rosen
1999-09-27 0:00 ` Brian Rogoff
1999-09-28 0:00 ` Robert Dewar
1999-09-24 0:00 ` Ted Dennison
1999-09-24 0:00 ` Nick Roberts
1999-09-24 0:00 ` Robert Dewar
1999-09-24 0:00 ` Wes Groleau
1999-09-25 0:00 ` Robert Dewar
1999-09-25 0:00 ` Robert Dewar
1999-09-24 0:00 ` Robert Dewar
1999-09-23 0:00 ` Ted Dennison
1999-09-24 0:00 ` Robert Dewar
1999-09-23 0:00 ` Robert I. Eachus
1999-09-24 0:00 ` Nick Roberts
1999-09-25 0:00 ` Robert Dewar
1999-09-25 0:00 ` Robert Dewar
1999-09-25 0:00 ` Robert Dewar
1999-09-27 0:00 ` Ted Dennison
1999-09-27 0:00 ` Pascal Obry
1999-09-28 0:00 ` Ted Dennison
1999-09-28 0:00 ` Robert Dewar
1999-09-29 0:00 ` Geoff Bull
1999-09-28 0:00 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox