Package Name: ada.strings.wide_maps.wide_constants
------------------------------------------------------------------------------
-- --
-- GNAT RUNTIME COMPONENTS --
-- --
-- A D A . S T R I N G S . W I D E _ M A P S . W I D E _ C O N S T A N T S --
-- --
-- S p e c --
-- --
-- $Revision: 1.14 $ --
-- --
-- This specification is adapted from the Ada Reference Manual for use with --
-- GNAT. In accordance with the copyright of that document, you can freely --
-- copy and modify this specification, provided that if you redistribute a --
-- modified version, any changes that you have made are clearly indicated. --
-- --
------------------------------------------------------------------------------
with Ada.Characters.Wide_Latin_1;
package Ada.Strings.Wide_Maps.Wide_Constants is
pragma Preelaborate (Wide_Constants);
package W renames Ada.Characters.Wide_Latin_1;
Control_Set : constant Wide_Maps.Wide_Character_Set;
Graphic_Set : constant Wide_Maps.Wide_Character_Set;
Letter_Set : constant Wide_Maps.Wide_Character_Set;
Lower_Set : constant Wide_Maps.Wide_Character_Set;
Upper_Set : constant Wide_Maps.Wide_Character_Set;
Basic_Set : constant Wide_Maps.Wide_Character_Set;
Decimal_Digit_Set : constant Wide_Maps.Wide_Character_Set;
Hexadecimal_Digit_Set : constant Wide_Maps.Wide_Character_Set;
Alphanumeric_Set : constant Wide_Maps.Wide_Character_Set;
Special_Graphic_Set : constant Wide_Maps.Wide_Character_Set;
ISO_646_Set : constant Wide_Maps.Wide_Character_Set;
Character_Set : constant Wide_Maps.Wide_Character_Set;
Lower_Case_Map : constant Wide_Maps.Wide_Character_Mapping;
-- Maps to lower case for letters, else identity
Upper_Case_Map : constant Wide_Maps.Wide_Character_Mapping;
-- Maps to upper case for letters, else identity
Basic_Map : constant Wide_Maps.Wide_Character_Mapping;
-- Maps to basic letter for letters, else identity
private
subtype WC is Wide_Character;
Control_Ranges : aliased constant Wide_Character_Ranges :=
((W.NUL, W.US),
(W.DEL, W.APC));
Control_Set : constant Wide_Character_Set :=
(AF.Controlled with
Control_Ranges'Unrestricted_Access);
Graphic_Ranges : aliased constant Wide_Character_Ranges :=
((W.' ', W.Tilde),
(WC'Val (256), WC'Last));
Graphic_Set : constant Wide_Character_Set :=
(AF.Controlled with
Graphic_Ranges'Unrestricted_Access);
Letter_Ranges : aliased constant Wide_Character_Ranges :=
((W.'A', W.'Z'),
(W.'a', W.'z'),
(W.UC_A_Grave, W.UC_O_Diaeresis),
(W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
(W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
Letter_Set : constant Wide_Character_Set :=
(AF.Controlled with
Letter_Ranges'Unrestricted_Access);
Lower_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (W.'a', W.'z'),
2 => (W.LC_German_Sharp_S, W.LC_O_Diaeresis),
3 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
Lower_Set : constant Wide_Character_Set :=
(AF.Controlled with
Lower_Ranges'Unrestricted_Access);
Upper_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (W.'A', W.'Z'),
2 => (W.UC_A_Grave, W.UC_O_Diaeresis),
3 => (W.UC_O_Oblique_Stroke, W.UC_Icelandic_Thorn));
Upper_Set : constant Wide_Character_Set :=
(AF.Controlled with
Upper_Ranges'Unrestricted_Access);
Basic_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (W.'A', W.'Z'),
2 => (W.'a', W.'z'),
3 => (W.UC_AE_Diphthong, W.UC_AE_Diphthong),
4 => (W.LC_AE_Diphthong, W.LC_AE_Diphthong),
5 => (W.LC_German_Sharp_S, W.LC_German_Sharp_S),
6 => (W.UC_Icelandic_Thorn, W.UC_Icelandic_Thorn),
7 => (W.LC_Icelandic_Thorn, W.LC_Icelandic_Thorn),
8 => (W.UC_Icelandic_Eth, W.UC_Icelandic_Eth),
9 => (W.LC_Icelandic_Eth, W.LC_Icelandic_Eth));
Basic_Set : constant Wide_Character_Set :=
(AF.Controlled with
Basic_Ranges'Unrestricted_Access);
Decimal_Digit_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (W.'0', W.'9'));
Decimal_Digit_Set : constant Wide_Character_Set :=
(AF.Controlled with
Decimal_Digit_Ranges'Unrestricted_Access);
Hexadecimal_Digit_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (W.'0', W.'9'),
2 => (W.'A', W.'F'),
3 => (W.'a', W.'f'));
Hexadecimal_Digit_Set : constant Wide_Character_Set :=
(AF.Controlled with
Hexadecimal_Digit_Ranges'Unrestricted_Access);
Alphanumeric_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (W.'0', W.'9'),
2 => (W.'A', W.'Z'),
3 => (W.'a', W.'z'),
4 => (W.UC_A_Grave, W.UC_O_Diaeresis),
5 => (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
6 => (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis));
Alphanumeric_Set : constant Wide_Character_Set :=
(AF.Controlled with
Alphanumeric_Ranges'Unrestricted_Access);
Special_Graphic_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (Wide_Space, W.Solidus),
2 => (W.Colon, W.Commercial_At),
3 => (W.Left_Square_Bracket, W.Grave),
4 => (W.Left_Curly_Bracket, W.Tilde),
5 => (W.No_Break_Space, W.Inverted_Question),
6 => (W.Multiplication_Sign, W.Multiplication_Sign),
7 => (W.Division_Sign, W.Division_Sign));
Special_Graphic_Set : constant Wide_Character_Set :=
(AF.Controlled with
Special_Graphic_Ranges'Unrestricted_Access);
ISO_646_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (W.NUL, W.DEL));
ISO_646_Set : constant Wide_Character_Set :=
(AF.Controlled with
ISO_646_Ranges'Unrestricted_Access);
Character_Ranges : aliased constant Wide_Character_Ranges :=
(1 => (W.NUL, WC'Val (255)));
Character_Set : constant Wide_Character_Set :=
(AF.Controlled with
Character_Ranges'Unrestricted_Access);
Lower_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
(Length => 56,
Domain =>
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
W.UC_A_Grave &
W.UC_A_Acute &
W.UC_A_Circumflex &
W.UC_A_Tilde &
W.UC_A_Diaeresis &
W.UC_A_Ring &
W.UC_AE_Diphthong &
W.UC_C_Cedilla &
W.UC_E_Grave &
W.UC_E_Acute &
W.UC_E_Circumflex &
W.UC_E_Diaeresis &
W.UC_I_Grave &
W.UC_I_Acute &
W.UC_I_Circumflex &
W.UC_I_Diaeresis &
W.UC_Icelandic_Eth &
W.UC_N_Tilde &
W.UC_O_Grave &
W.UC_O_Acute &
W.UC_O_Circumflex &
W.UC_O_Tilde &
W.UC_O_Diaeresis &
W.UC_O_Oblique_Stroke &
W.UC_U_Grave &
W.UC_U_Acute &
W.UC_U_Circumflex &
W.UC_U_Diaeresis &
W.UC_Y_Acute &
W.UC_Icelandic_Thorn,
Rangev =>
"abcdefghijklmnopqrstuvwxyz" &
W.LC_A_Grave &
W.LC_A_Acute &
W.LC_A_Circumflex &
W.LC_A_Tilde &
W.LC_A_Diaeresis &
W.LC_A_Ring &
W.LC_AE_Diphthong &
W.LC_C_Cedilla &
W.LC_E_Grave &
W.LC_E_Acute &
W.LC_E_Circumflex &
W.LC_E_Diaeresis &
W.LC_I_Grave &
W.LC_I_Acute &
W.LC_I_Circumflex &
W.LC_I_Diaeresis &
W.LC_Icelandic_Eth &
W.LC_N_Tilde &
W.LC_O_Grave &
W.LC_O_Acute &
W.LC_O_Circumflex &
W.LC_O_Tilde &
W.LC_O_Diaeresis &
W.LC_O_Oblique_Stroke &
W.LC_U_Grave &
W.LC_U_Acute &
W.LC_U_Circumflex &
W.LC_U_Diaeresis &
W.LC_Y_Acute &
W.LC_Icelandic_Thorn);
Lower_Case_Map : constant Wide_Character_Mapping :=
(AF.Controlled with
Map => Lower_Case_Mapping'Unrestricted_Access);
Upper_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
(Length => 56,
Domain =>
"abcdefghijklmnopqrstuvwxyz" &
W.LC_A_Grave &
W.LC_A_Acute &
W.LC_A_Circumflex &
W.LC_A_Tilde &
W.LC_A_Diaeresis &
W.LC_A_Ring &
W.LC_AE_Diphthong &
W.LC_C_Cedilla &
W.LC_E_Grave &
W.LC_E_Acute &
W.LC_E_Circumflex &
W.LC_E_Diaeresis &
W.LC_I_Grave &
W.LC_I_Acute &
W.LC_I_Circumflex &
W.LC_I_Diaeresis &
W.LC_Icelandic_Eth &
W.LC_N_Tilde &
W.LC_O_Grave &
W.LC_O_Acute &
W.LC_O_Circumflex &
W.LC_O_Tilde &
W.LC_O_Diaeresis &
W.LC_O_Oblique_Stroke &
W.LC_U_Grave &
W.LC_U_Acute &
W.LC_U_Circumflex &
W.LC_U_Diaeresis &
W.LC_Y_Acute &
W.LC_Icelandic_Thorn,
Rangev =>
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
W.UC_A_Grave &
W.UC_A_Acute &
W.UC_A_Circumflex &
W.UC_A_Tilde &
W.UC_A_Diaeresis &
W.UC_A_Ring &
W.UC_AE_Diphthong &
W.UC_C_Cedilla &
W.UC_E_Grave &
W.UC_E_Acute &
W.UC_E_Circumflex &
W.UC_E_Diaeresis &
W.UC_I_Grave &
W.UC_I_Acute &
W.UC_I_Circumflex &
W.UC_I_Diaeresis &
W.UC_Icelandic_Eth &
W.UC_N_Tilde &
W.UC_O_Grave &
W.UC_O_Acute &
W.UC_O_Circumflex &
W.UC_O_Tilde &
W.UC_O_Diaeresis &
W.UC_O_Oblique_Stroke &
W.UC_U_Grave &
W.UC_U_Acute &
W.UC_U_Circumflex &
W.UC_U_Diaeresis &
W.UC_Y_Acute &
W.UC_Icelandic_Thorn);
Upper_Case_Map : constant Wide_Character_Mapping :=
(AF.Controlled with
Upper_Case_Mapping'Unrestricted_Access);
Basic_Mapping : aliased constant Wide_Character_Mapping_Values :=
(Length => 55,
Domain =>
W.UC_A_Grave &
W.UC_A_Acute &
W.UC_A_Circumflex &
W.UC_A_Tilde &
W.UC_A_Diaeresis &
W.UC_A_Ring &
W.UC_C_Cedilla &
W.UC_E_Grave &
W.UC_E_Acute &
W.UC_E_Circumflex &
W.UC_E_Diaeresis &
W.UC_I_Grave &
W.UC_I_Acute &
W.UC_I_Circumflex &
W.UC_I_Diaeresis &
W.UC_N_Tilde &
W.UC_O_Grave &
W.UC_O_Acute &
W.UC_O_Circumflex &
W.UC_O_Tilde &
W.UC_O_Diaeresis &
W.UC_O_Oblique_Stroke &
W.UC_U_Grave &
W.UC_U_Acute &
W.UC_U_Circumflex &
W.UC_U_Diaeresis &
W.UC_Y_Acute &
W.LC_A_Grave &
W.LC_A_Acute &
W.LC_A_Circumflex &
W.LC_A_Tilde &
W.LC_A_Diaeresis &
W.LC_A_Ring &
W.LC_C_Cedilla &
W.LC_E_Grave &
W.LC_E_Acute &
W.LC_E_Circumflex &
W.LC_E_Diaeresis &
W.LC_I_Grave &
W.LC_I_Acute &
W.LC_I_Circumflex &
W.LC_I_Diaeresis &
W.LC_N_Tilde &
W.LC_O_Grave &
W.LC_O_Acute &
W.LC_O_Circumflex &
W.LC_O_Tilde &
W.LC_O_Diaeresis &
W.LC_O_Oblique_Stroke &
W.LC_U_Grave &
W.LC_U_Acute &
W.LC_U_Circumflex &
W.LC_U_Diaeresis &
W.LC_Y_Acute &
W.LC_Y_Diaeresis,
Rangev =>
'A' & -- UC_A_Grave
'A' & -- UC_A_Acute
'A' & -- UC_A_Circumflex
'A' & -- UC_A_Tilde
'A' & -- UC_A_Diaeresis
'A' & -- UC_A_Ring
'C' & -- UC_C_Cedilla
'E' & -- UC_E_Grave
'E' & -- UC_E_Acute
'E' & -- UC_E_Circumflex
'E' & -- UC_E_Diaeresis
'I' & -- UC_I_Grave
'I' & -- UC_I_Acute
'I' & -- UC_I_Circumflex
'I' & -- UC_I_Diaeresis
'N' & -- UC_N_Tilde
'O' & -- UC_O_Grave
'O' & -- UC_O_Acute
'O' & -- UC_O_Circumflex
'O' & -- UC_O_Tilde
'O' & -- UC_O_Diaeresis
'O' & -- UC_O_Oblique_Stroke
'U' & -- UC_U_Grave
'U' & -- UC_U_Acute
'U' & -- UC_U_Circumflex
'U' & -- UC_U_Diaeresis
'Y' & -- UC_Y_Acute
'a' & -- LC_A_Grave
'a' & -- LC_A_Acute
'a' & -- LC_A_Circumflex
'a' & -- LC_A_Tilde
'a' & -- LC_A_Diaeresis
'a' & -- LC_A_Ring
'c' & -- LC_C_Cedilla
'e' & -- LC_E_Grave
'e' & -- LC_E_Acute
'e' & -- LC_E_Circumflex
'e' & -- LC_E_Diaeresis
'i' & -- LC_I_Grave
'i' & -- LC_I_Acute
'i' & -- LC_I_Circumflex
'i' & -- LC_I_Diaeresis
'n' & -- LC_N_Tilde
'o' & -- LC_O_Grave
'o' & -- LC_O_Acute
'o' & -- LC_O_Circumflex
'o' & -- LC_O_Tilde
'o' & -- LC_O_Diaeresis
'o' & -- LC_O_Oblique_Stroke
'u' & -- LC_U_Grave
'u' & -- LC_U_Acute
'u' & -- LC_U_Circumflex
'u' & -- LC_U_Diaeresis
'y' & -- LC_Y_Acute
'y'); -- LC_Y_Diaeresis
Basic_Map : constant Wide_Character_Mapping :=
(AF.Controlled with
Basic_Mapping'Unrestricted_Access);
end Ada.Strings.Wide_Maps.Wide_Constants;