comp.lang.ada
 help / color / mirror / Atom feed
From: dewar@gnat.com (Robert Dewar)
Subject: Re: Size and pack
Date: 31 Oct 2001 22:00:05 -0800
Date: 2001-11-01T06:00:06+00:00	[thread overview]
Message-ID: <5ee5b646.0110312200.75ee9e8c@posting.google.com> (raw)
In-Reply-To: nHRD7.162473$vq.40258001@typhoon.ne.mediaone.net

"Jeff Creem" <jeff@thecreems.com> wrote in message news:<nHRD7.162473$vq.40258001@typhoon.ne.mediaone.net>...

> Not for the record case but for arrays of items that have 
> been rep spec'ed.
> 
> for example, the code fragment
> 
> type My_Type is range 0 .. 3;
> for My_Type'size use 2;
> 
> type My_Array is array (1 .. 4) of My_Type;
> pragma Pack (My_Array); -- Without this the following 
> could fail for My_Array'size use 8;

Well yes, but this array has NOT been "rep spec'ed", you
did not specify a component size. That's what corresponds
to specifying a full record clause. So if you want to control exactly
what happens, a better form of the above
is:

   type My_Type is range 0 .. 3;
   for My_Type'Size use 2;

   type My_Array is array (1 .. 4) of My_Type;
   for My_Array'Component_Size use 2;
   for My_Array'Size use 8;

the last clause is redundant, but often useful for
documentation emphasis, but most certainly a pragma
Pack is redundant in this case.

> I *THINK* GNAT does allow it to go through without the 
> rep spec for several versions now.

You think wrong, the size clause alone should NOT change
the layout, and in GNAT it will not.

Use pack if you just generally want to save space (as in
the record case). Use component_Size if you want to precisely control
the size of components.



  parent reply	other threads:[~2001-11-01  6:00 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-10  8:05 Size and pack Adrian Hoe
2001-10-10  8:59 ` Alfred Hilscher
2001-10-10  9:50   ` John McCabe
2001-10-11  6:36     ` Adrian Hoe
2001-10-11  8:55       ` John McCabe
2001-10-31  1:53         ` Robert Dewar
2001-10-31  1:50     ` Robert Dewar
2001-10-31  9:17       ` John McCabe
2001-10-31 11:58       ` Jeff Creem
2001-11-01  1:58         ` Adrian Hoe
2001-11-01  2:34           ` Jeff Creem
2001-11-01 14:58             ` Marin David Condic
2001-11-01  3:53           ` Matthew Heaney
2001-11-01 18:37             ` Jeff Creem
2001-11-02  3:39               ` Robert Dewar
2001-11-01  3:45         ` Jeffrey Carter
2001-11-01  6:00         ` Robert Dewar [this message]
2001-10-10  9:24 ` Pi
2001-10-10  9:27 ` Lutz Donnerhacke
2001-10-11  6:24   ` Adrian Hoe
2001-10-11  8:58     ` John McCabe
2001-10-11 13:20       ` Mark Johnson
2001-10-11 16:23         ` John McCabe
2001-10-11 16:00           ` Pat Rogers
2001-10-12  8:37             ` John McCabe
2001-10-28  1:30         ` Robert Dewar
2001-10-11  9:30     ` Lutz Donnerhacke
2001-10-11 10:12 ` Vincent Smeets
2001-10-11 10:19   ` Lutz Donnerhacke
2001-10-11 11:18     ` David C. Hoos, Sr.
2001-10-11 12:06       ` Lutz Donnerhacke
2001-10-11 13:49 ` Ted Dennison
2001-10-26  4:00 ` Smark
2001-10-26  6:14   ` tmoran
2001-10-26 17:51     ` Smark
2001-10-26 23:21       ` Jeffrey Carter
2001-10-26 23:39       ` tmoran
2001-10-29  1:01         ` Adrian Hoe
2001-10-29  2:21           ` tmoran
2001-10-29 10:42             ` Adrian Hoe
2001-10-29 23:15               ` tmoran
2001-10-29  9:52         ` Lutz Donnerhacke
2001-10-29 10:29           ` Larry Kilgallen
2001-10-29 10:50             ` Lutz Donnerhacke
2001-10-29 11:12               ` Larry Kilgallen
2001-10-31  2:02                 ` Robert Dewar
2001-10-31  2:00               ` Robert Dewar
2001-10-31  2:51                 ` Larry Kilgallen
2001-10-31  1:59           ` Robert Dewar
2001-10-31  1:57       ` Robert Dewar
2001-10-31  1:55   ` 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