Contents Index Search Previous Next
13.2 Pragma Pack
1
A pragma
Pack specifies that storage minimization should be the main criterion
when selecting the representation of a composite type.
Syntax
2
The form of
a pragma Pack is as follows:
3
pragma Pack(
first_subtype_local_name);
Legality Rules
4
The first_subtype_local_name
of a pragma Pack shall denote a
composite subtype.
Static Semantics
5
A
pragma Pack specifies the
packing
aspect of representation; the type (or the extension part) is said to
be
packed. For a type extension, the parent part is packed as
for the parent type, and a
pragma
Pack causes packing only of the extension part.
Implementation Advice
6
If a type is packed, then the implementation should
try to minimize storage allocated to objects of the type, possibly at
the expense of speed of accessing components, subject to reasonable complexity
in addressing calculations.
7
The
recommended level of support for pragma Pack is:
8
- For a packed record type, the components
should be packed as tightly as possible subject to the Sizes of the component
subtypes, and subject to any record_representation_clause
that applies to the type; the implementation may, but need not, reorder
components or cross aligned word boundaries to improve the packing. A
component whose Size is greater than the word size may be allocated an
integral number of words.
9
- For a packed array type, if the component
subtype's Size is less than or equal to the word size, and Component_Size
is not specified for the type, Component_Size should be less than or
equal to the Size of the component subtype, rounded up to the nearest
factor of the word size.
Contents Index Search Previous Next Legal