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 nonderived 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.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe