1 ------------------------------------------------------------------------------
3 -- GNAT RUN-TIME COMPONENTS --
5 -- 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 --
9 -- Copyright (C) 1992-2018, Free Software Foundation, Inc. --
11 -- This specification is derived from the Ada Reference Manual for use with --
12 -- GNAT. The copyright notice above, and the license provisions that follow --
13 -- apply solely to the contents of the part following the private keyword. --
15 -- GNAT is free software; you can redistribute it and/or modify it under --
16 -- terms of the GNU General Public License as published by the Free Soft- --
17 -- ware Foundation; either version 3, or (at your option) any later ver- --
18 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
19 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
20 -- or FITNESS FOR A PARTICULAR PURPOSE. --
22 -- As a special exception under Section 7 of GPL version 3, you are granted --
23 -- additional permissions described in the GCC Runtime Library Exception, --
24 -- version 3.1, as published by the Free Software Foundation. --
26 -- You should have received a copy of the GNU General Public License and --
27 -- a copy of the GCC Runtime Library Exception along with this program; --
28 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
29 -- <http://www.gnu.org/licenses/>. --
31 -- GNAT was originally developed by the GNAT team at New York University. --
32 -- Extensive contributions were provided by Ada Core Technologies Inc. --
34 ------------------------------------------------------------------------------
36 with Ada
.Characters
.Wide_Latin_1
;
38 package Ada
.Strings
.Wide_Maps
.Wide_Constants
is
41 Control_Set
: constant Wide_Maps
.Wide_Character_Set
;
42 Graphic_Set
: constant Wide_Maps
.Wide_Character_Set
;
43 Letter_Set
: constant Wide_Maps
.Wide_Character_Set
;
44 Lower_Set
: constant Wide_Maps
.Wide_Character_Set
;
45 Upper_Set
: constant Wide_Maps
.Wide_Character_Set
;
46 Basic_Set
: constant Wide_Maps
.Wide_Character_Set
;
47 Decimal_Digit_Set
: constant Wide_Maps
.Wide_Character_Set
;
48 Hexadecimal_Digit_Set
: constant Wide_Maps
.Wide_Character_Set
;
49 Alphanumeric_Set
: constant Wide_Maps
.Wide_Character_Set
;
50 Special_Graphic_Set
: constant Wide_Maps
.Wide_Character_Set
;
51 ISO_646_Set
: constant Wide_Maps
.Wide_Character_Set
;
52 Character_Set
: constant Wide_Maps
.Wide_Character_Set
;
54 Lower_Case_Map
: constant Wide_Maps
.Wide_Character_Mapping
;
55 -- Maps to lower case for letters, else identity
57 Upper_Case_Map
: constant Wide_Maps
.Wide_Character_Mapping
;
58 -- Maps to upper case for letters, else identity
60 Basic_Map
: constant Wide_Maps
.Wide_Character_Mapping
;
61 -- Maps to basic letter for letters, else identity
64 package W
renames Ada
.Characters
.Wide_Latin_1
;
66 subtype WC
is Wide_Character;
68 Control_Ranges
: aliased constant Wide_Character_Ranges
:=
72 Control_Set
: constant Wide_Character_Set
:=
74 Control_Ranges
'Unrestricted_Access);
76 Graphic_Ranges
: aliased constant Wide_Character_Ranges
:=
78 (WC
'Val (256), WC
'Last));
80 Graphic_Set
: constant Wide_Character_Set
:=
82 Graphic_Ranges
'Unrestricted_Access);
84 Letter_Ranges
: aliased constant Wide_Character_Ranges
:=
87 (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
88 (W
.UC_O_Oblique_Stroke
, W
.LC_O_Diaeresis
),
89 (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
91 Letter_Set
: constant Wide_Character_Set
:=
93 Letter_Ranges
'Unrestricted_Access);
95 Lower_Ranges
: aliased constant Wide_Character_Ranges
:=
96 (1 => (W
.LC_A
, W
.LC_Z
),
97 2 => (W
.LC_German_Sharp_S
, W
.LC_O_Diaeresis
),
98 3 => (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
100 Lower_Set
: constant Wide_Character_Set
:=
102 Lower_Ranges
'Unrestricted_Access);
104 Upper_Ranges
: aliased constant Wide_Character_Ranges
:=
106 2 => (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
107 3 => (W
.UC_O_Oblique_Stroke
, W
.UC_Icelandic_Thorn
));
109 Upper_Set
: constant Wide_Character_Set
:=
111 Upper_Ranges
'Unrestricted_Access);
113 Basic_Ranges
: aliased constant Wide_Character_Ranges
:=
115 2 => (W
.LC_A
, W
.LC_Z
),
116 3 => (W
.UC_AE_Diphthong
, W
.UC_AE_Diphthong
),
117 4 => (W
.LC_AE_Diphthong
, W
.LC_AE_Diphthong
),
118 5 => (W
.LC_German_Sharp_S
, W
.LC_German_Sharp_S
),
119 6 => (W
.UC_Icelandic_Thorn
, W
.UC_Icelandic_Thorn
),
120 7 => (W
.LC_Icelandic_Thorn
, W
.LC_Icelandic_Thorn
),
121 8 => (W
.UC_Icelandic_Eth
, W
.UC_Icelandic_Eth
),
122 9 => (W
.LC_Icelandic_Eth
, W
.LC_Icelandic_Eth
));
124 Basic_Set
: constant Wide_Character_Set
:=
126 Basic_Ranges
'Unrestricted_Access);
128 Decimal_Digit_Ranges
: aliased constant Wide_Character_Ranges
:=
131 Decimal_Digit_Set
: constant Wide_Character_Set
:=
133 Decimal_Digit_Ranges
'Unrestricted_Access);
135 Hexadecimal_Digit_Ranges
: aliased constant Wide_Character_Ranges
:=
138 3 => (W
.LC_A
, W
.LC_F
));
140 Hexadecimal_Digit_Set
: constant Wide_Character_Set
:=
142 Hexadecimal_Digit_Ranges
'Unrestricted_Access);
144 Alphanumeric_Ranges
: aliased constant Wide_Character_Ranges
:=
147 3 => (W
.LC_A
, W
.LC_Z
),
148 4 => (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
149 5 => (W
.UC_O_Oblique_Stroke
, W
.LC_O_Diaeresis
),
150 6 => (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
152 Alphanumeric_Set
: constant Wide_Character_Set
:=
154 Alphanumeric_Ranges
'Unrestricted_Access);
156 Special_Graphic_Ranges
: aliased constant Wide_Character_Ranges
:=
157 (1 => (Wide_Space
, W
.Solidus
),
158 2 => (W
.Colon
, W
.Commercial_At
),
159 3 => (W
.Left_Square_Bracket
, W
.Grave
),
160 4 => (W
.Left_Curly_Bracket
, W
.Tilde
),
161 5 => (W
.No_Break_Space
, W
.Inverted_Question
),
162 6 => (W
.Multiplication_Sign
, W
.Multiplication_Sign
),
163 7 => (W
.Division_Sign
, W
.Division_Sign
));
165 Special_Graphic_Set
: constant Wide_Character_Set
:=
167 Special_Graphic_Ranges
'Unrestricted_Access);
169 ISO_646_Ranges
: aliased constant Wide_Character_Ranges
:=
170 (1 => (W
.NUL
, W
.DEL
));
172 ISO_646_Set
: constant Wide_Character_Set
:=
174 ISO_646_Ranges
'Unrestricted_Access);
176 Character_Ranges
: aliased constant Wide_Character_Ranges
:=
177 (1 => (W
.NUL
, WC
'Val (255)));
179 Character_Set
: constant Wide_Character_Set
:=
181 Character_Ranges
'Unrestricted_Access);
183 Lower_Case_Mapping
: aliased constant Wide_Character_Mapping_Values
:=
187 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
211 W
.UC_O_Oblique_Stroke
&
217 W
.UC_Icelandic_Thorn
,
220 "abcdefghijklmnopqrstuvwxyz" &
244 W
.LC_O_Oblique_Stroke
&
250 W
.LC_Icelandic_Thorn
);
252 Lower_Case_Map
: constant Wide_Character_Mapping
:=
254 Map
=> Lower_Case_Mapping
'Unrestricted_Access);
256 Upper_Case_Mapping
: aliased constant Wide_Character_Mapping_Values
:=
260 "abcdefghijklmnopqrstuvwxyz" &
284 W
.LC_O_Oblique_Stroke
&
290 W
.LC_Icelandic_Thorn
,
293 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
317 W
.UC_O_Oblique_Stroke
&
323 W
.UC_Icelandic_Thorn
);
325 Upper_Case_Map
: constant Wide_Character_Mapping
:=
327 Upper_Case_Mapping
'Unrestricted_Access);
329 Basic_Mapping
: aliased constant Wide_Character_Mapping_Values
:=
354 W
.UC_O_Oblique_Stroke
&
381 W
.LC_O_Oblique_Stroke
&
392 'A' & -- UC_A_Circumflex
394 'A' & -- UC_A_Diaeresis
396 'C' & -- UC_C_Cedilla
399 'E' & -- UC_E_Circumflex
400 'E' & -- UC_E_Diaeresis
403 'I' & -- UC_I_Circumflex
404 'I' & -- UC_I_Diaeresis
408 'O' & -- UC_O_Circumflex
410 'O' & -- UC_O_Diaeresis
411 'O' & -- UC_O_Oblique_Stroke
414 'U' & -- UC_U_Circumflex
415 'U' & -- UC_U_Diaeresis
419 'a' & -- LC_A_Circumflex
421 'a' & -- LC_A_Diaeresis
423 'c' & -- LC_C_Cedilla
426 'e' & -- LC_E_Circumflex
427 'e' & -- LC_E_Diaeresis
430 'i' & -- LC_I_Circumflex
431 'i' & -- LC_I_Diaeresis
435 'o' & -- LC_O_Circumflex
437 'o' & -- LC_O_Diaeresis
438 'o' & -- LC_O_Oblique_Stroke
441 'u' & -- LC_U_Circumflex
442 'u' & -- LC_U_Diaeresis
444 'y'); -- LC_Y_Diaeresis
446 Basic_Map
: constant Wide_Character_Mapping
:=
448 Basic_Mapping
'Unrestricted_Access);
450 end Ada
.Strings
.Wide_Maps
.Wide_Constants
;