comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Record representation
Date: Thu, 10 Jun 2004 01:10:07 -0500
Date: 2004-06-10T01:10:07-05:00	[thread overview]
Message-ID: <TfGdnTVBHqyzZlrd4p2dnA@megapath.net> (raw)
In-Reply-To: 40c6d3d1$1_1@baen1673807.greenlnk.net

"Martin Dowie" <martin.dowie@baesystems.com> wrote in message
news:40c6d3d1$1_1@baen1673807.greenlnk.net...
> Is there anything that could be done (quickly ;-) by the ARG for Ada200Y
to
> do something about this common pain in the *ss?
>
> package Record_Rep is
>
>    type A is record
>       I : Integer;
>    end record;
>    for A'Size use Integer'Size;
>
>    type Index is new Integer range 1 .. 10;
>
>    type AA is array (Index) of A;
>    for AA'Size use A'Size * Index'Last;  -- Not allowed!!!!!
>
> end Record_Rep;
>
> Surely the language could be made smart enough to support this? This can
be
> a real maintenance nightmare to change.

While I've had this problem myself, it occurs mainly because of an abuse of
the language (or not trusting compilers to do the right thing). The
important point is that 'Size on a composite type is not supposed to change
the sizes of the components (see 13.3(53)), so it really only can be a
confirming specification - not very interesting. Hardly worth changing the
language over.

When I've had this problem, I'll generally declare appropriate constants:

package Record_Rep is

   type A is record
      I : Integer;
   end record;
   A_SIZE : constant := Integer'Size; -- Usually more complex than this!
   for A'Size use A_SIZE;

    type Index is new Integer range 1 .. 10;

    type AA is array (Index) of A;
    for AA'Size use A_SIZE * Index'Last;  -- Fine.

end Record_Rep;

                    Randy.






  parent reply	other threads:[~2004-06-10  6:10 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-09  9:14 Record representation Martin Dowie
2004-06-09 11:38 ` Martin Krischik
2004-06-09 14:11   ` Martin Dowie
2004-06-09 15:30 ` Mark H Johnson
2004-06-09 16:58   ` Martin Dowie
2004-06-09 17:44     ` tmoran
2004-06-09 20:08     ` Mark H Johnson
2004-06-09 21:12       ` Martin Dowie
2004-06-09 21:14       ` Martin Dowie
2004-06-10  0:38 ` Stephen Leake
2004-06-10  6:13   ` Randy Brukardt
2004-06-10  6:10 ` Randy Brukardt [this message]
2004-06-15  7:37   ` Martin Dowie
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox