C.5 Pragma Discard_Names
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:
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_Wide_Image and Wide_Wide_Value attributes are
implementation defined for that type; the semantics of Image, Wide_Image,
Value, and Wide_Value are still defined in terms of Wide_Wide_Image and
Wide_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.Wide_Wide_Expanded_Name function are implementation
defined for that type; the semantics of Tags.Expanded_Name and Tags.Wide_Expanded_Name
are still defined in terms of Tags.Wide_Wide_Expanded_Name. If the pragma
applies to an exception, then the semantics of the Exceptions.Wide_Wide_Exception_Name
function are implementation defined for that exception; the semantics
of Exceptions.Exception_Name and Exceptions.Wide_Exception_Name are still
defined in terms of Exceptions.Wide_Wide_Exception_Name.
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.