From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,54a7591bed8148f2 X-Google-Attributes: gid103376,public Path: g2news1.google.com!news1.google.com!news.glorb.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local1.nntp.dca.giganews.com!nntp.megapath.net!news.megapath.net.POSTED!not-for-mail NNTP-Posting-Date: Thu, 10 Jun 2004 01:09:48 -0500 From: "Randy Brukardt" Newsgroups: comp.lang.ada References: <40c6d3d1$1_1@baen1673807.greenlnk.net> Subject: Re: Record representation Date: Thu, 10 Jun 2004 01:10:07 -0500 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4807.1700 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300 Message-ID: NNTP-Posting-Host: 64.32.209.38 X-Trace: sv3-Hy3y2eoW9/qpAMmX3JfXkUCz2VqjLg9oHI3ij/LGPVL1SesUPecTSPblxVng1Wj8oBcl7Pk6e/vpKkh!s69XzreOuCN7C6JQDponbGuveKjqwP8UsM842Rl3c2Sq1BIfvXIUiL4d5RFeLN8kpkWpaEhjqyJ3 X-Complaints-To: abuse@megapath.net X-DMCA-Complaints-To: abuse@megapath.net X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.1 Xref: g2news1.google.com comp.lang.ada:1355 Date: 2004-06-10T01:10:07-05:00 List-Id: "Martin Dowie" 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.