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=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,9ae4660d46953150 X-Google-Attributes: gid103376,public From: "Samuel T. Harris" Subject: Re: Enhancement needed Date: 2000/09/17 Message-ID: <39C5530F.B7849F7A@Raytheon.com>#1/1 X-Deja-AN: 671002439 Content-Transfer-Encoding: 7bit References: <0$9CsHAKbiv5Ewg1@ntlworld.com> <8pol3q$dnqb3$1@ID-25716.news.cis.dfn.de> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii Organization: Raytheon Aerospace Engineering Services Mime-Version: 1.0 Reply-To: samuel_t_harris@raytheon.com Newsgroups: comp.lang.ada Date: 2000-09-17T00:00:00+00:00 List-Id: Michael Pickett wrote: > > In article <8pol3q$dnqb3$1@ID-25716.news.cis.dfn.de>, Nick Roberts > writes > >I'd be grateful if you would mention what it was that you actually wanted > >your compiler to do, so I can make mine do the same. I'm always eager to > >please. People seem to think that compiler writers have to be legally > >coerced into doing anything; some of us will actually respond to a little > >courtesy. ;-) > > I wasn't the original poster, and I didn't retain the earlier postings, > but as far as I recall, the expectation and previous experience was that > setting the Size attribute for a record type should result in the > compiler adjusting, if necessary, the internal layout of the record from > the default layout. I find that expectation dubious, from whereever it comes. Consider the following problem. A memory mapped device provides a collection of data at a specific memory address. I use an Ada record to overlay that address. I need a rather explicit representation clause to exactly place each field in the appropriate location. I need an address clause to place the record object at the appropriate place in memory. I use a size clause as an extra check to ensure my record layout indeed fits the size of the memory area. I definately don't want the size clause changing the layout at all. I expect a warning is the size is too large for the record and an error if it is too small. Consider another problem. I'm interfacing to a C API. I used to use rep clauses on the records to make them fit, but I now have pragma Convention in Ada 95 which eliminates all that drudgery. I still use a size clause to confirm the record will fit into the size I want. Pragma Convention defines the layout, I don't want the size clause changing it. If all I'm after is a packed version of the record with no padding or extra bits, then I expect pragma pack to do the job. -- Samuel T. Harris, Principal Engineer Raytheon, Aerospace Engineering Services "If you can make it, We can fake it!"