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-Thread: a07f3367d7,5d624451bcaff335 X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news1.google.com!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!post02.iad.highwinds-media.com!news.flashnewsgroups.com-b7.4zTQh5tI3A!not-for-mail Newsgroups: comp.lang.ada Subject: Re: Null Range in Unconstrasined Array References: <76a9c14b-c573-4fd4-bbd8-7ab3bd078d79@j9g2000prh.googlegroups.com> <68f49a20-2142-46ee-bed8-e5b3cad398e0@l35g2000pra.googlegroups.com> From: Stephen Leake Date: Wed, 09 Sep 2009 04:35:19 -0400 Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (windows-nt) Cancel-Lock: sha1:f1N4IAD4MKYSg6WULTdOrEl0nvY= MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: abuse@flashnewsgroups.com Organization: FlashNewsgroups.com X-Trace: d2bb94aa76867e197caa715953 Xref: g2news2.google.com comp.lang.ada:8239 Date: 2009-09-09T04:35:19-04:00 List-Id: Adam Beneschan writes: > To elaborate on this a bit further: Suppose you define a record type > for reading a file with Ada.Direct_IO, that looks something like this: > > type Employee_Data is record > Name : String (1 .. 50); > Address1 : String (1 .. 40); > Address2 : String (1 .. 40); > City : String (1 .. 30); > State : String (1 .. 2); > ... > end record; > > (Reminds me of my COBOL programming days...) Anyway, it would be very > unexpected for the compiler to put two extra integers in the record > for each of these strings, and it would mess up your file I/O. If you expect the layout of this record to match your file, you must provide a representation clause. > But you have to have the ability to pass any of those fields to a > subprogram with a parameter type "String", and the bounds have to be > passed to the subprogram somehow. I think it's most likely that the > bounds will be passed separately, as Bob suggested, either by > passing them in separate registers, creating a three-word temporary > structure that contains the bounds and a pointer to the data and > passing the address of that structure (with that structure > disappearing after the subprogram returns), creating a two-word > structure with the bounds and passing the address of that in a > register, etc. Something along those lines. But I'd actually be > surprised if *any* implementation allocated extra space in an > Employee_Data record to hold the bounds of each field. It _could_ depend on whether there's a pragma Pack, or a representation clause, for the record. In the absence of such, I would expect the compiler to treat these components the same way it treats separate objects. Which means I would expect the bounds to be stored with the object. But that's just my expectations; compilers are free to do whatever they want, as long as it meets the standard. -- -- Stephe