A.4.6 String-Handling Sets and Mappings
The language-defined package Strings.Maps.Constants
declares Character_Set and Character_Mapping constants corresponding
to classification and conversion functions in package Characters.Handling.
Discussion: The Constants package is
a child of Strings.Maps since it needs visibility of the private part
of Strings.Maps in order to initialize the constants in a preelaborable
way (i.e. via aggregates versus function calls).
Static Semantics
The library package
Strings.Maps.Constants has the following declaration:
{
AI95-00362-01}
package Ada.Strings.Maps.Constants
is
pragma Pure(Constants);
Control_Set :
constant Character_Set;
Graphic_Set :
constant Character_Set;
Letter_Set :
constant Character_Set;
Lower_Set :
constant Character_Set;
Upper_Set :
constant Character_Set;
Basic_Set :
constant Character_Set;
Decimal_Digit_Set :
constant Character_Set;
Hexadecimal_Digit_Set :
constant Character_Set;
Alphanumeric_Set :
constant Character_Set;
Special_Set :
constant Character_Set;
ISO_646_Set :
constant Character_Set;
Lower_Case_Map :
constant Character_Mapping;
--
Maps to lower case for letters, else identity
Upper_Case_Map :
constant Character_Mapping;
--
Maps to upper case for letters, else identity
Basic_Map :
constant Character_Mapping;
--
Maps to basic letter for letters, else identity
private
... -- not specified by the language
end Ada.Strings.Maps.Constants;
Each of these constants represents a correspondingly
named set of characters or character mapping in Characters.Handling (see
A.3.2).
15 {
AI05-0114-1}
There are certain characters which are defined to be lower case letters
by ISO 10646 and are therefore allowed in identifiers, but are not considered
lower case letters by Ada.Strings.Maps.Constants.
Reason: This is to maintain runtime compatibility
with the Ada 95 definitions of these constants; existing correct programs
could break if the definitions were changed in a way the programs did
not anticipate.
Extensions to Ada 95
{
AI95-00362-01}
Strings.Maps.Constants is now Pure, so it can be
used in pure units.
Wording Changes from Ada 2005
{
AI05-0114-1}
Correction: Added a note to clarify that these constants don't
have any relationship to the characters allowed in identifiers.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe