Go to the first, previous, next, last section, table of contents.
-
A pragma Discard_Names may be used to request a reduction in storage
used for the names of certain entities.
Syntax
-
The form of a pragma Discard_Names is as follows:
-
pragma Discard_Names[([On => ] local_name)];
-
A pragma Discard_Names is allowed only immediately within a
declarative_part, immediately within a package_specification, or as a
configuration pragma.
Legality Rules
-
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
-
If a local_name is given, then a pragma Discard_Names is a
representation pragma.
-
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
-
If the pragma applies to an entity, then the implementation should
reduce the amount of storage used for storing names associated with that
entity.
Go to the first, previous, next, last section, table of contents.