- (1)
- A pragma Pack specifies that storage minimization should be the main
criterion when selecting the representation of a composite type.
- (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.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12