- (1)
- A pragma Discard_Names may be used to request a reduction in storage used
for the names of certain entities.
- (2)
- The form of a pragma Discard_Names is as follows:
(3)
pragma Discard_Names[([On => ] local_name)];
- (4)
- A pragma Discard_Names is allowed only immediately within a
declarative_part, immediately within a package_specification, or as a
configuration pragma.
Legality Rules
- (5)
- The local_name (if present) shall denote a non-derived enumeration first
subtype, a tagged first subtype, or an exception. The pragma applies to the
type or exception. Without a local_name, the pragma applies to all such
entities declared after the pragma, within the same declarative region.
Alternatively, the pragma can be used as a configuration pragma. If the
pragma applies to a type, then it applies also to all descendants of the
type.
Static Semantics
- (6)
- If a local_name is given, then a pragma Discard_Names is a representation
pragma.
- (7)
- If the pragma applies to an enumeration type, then the semantics of the
Wide_Image and Wide_Value attributes are implementation defined for that
type; the semantics of Image and Value are still defined in terms of Wide_Image and Wide_Value. In addition, the semantics of Text_IO.Enumeration_IO
are implementation defined. If the pragma applies to a tagged type, then the
semantics of the Tags.Expanded_Name function are implementation defined for
that type. If the pragma applies to an exception, then the semantics of the
Exceptions.Exception_Name function are implementation defined for that
exception.
Implementation Advice
- (8)
- If the pragma applies to an entity, then the implementation should reduce
the amount of storage used for storing names associated with that entity.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12