PR rtl-optimization/82913
[official-gcc.git] / gcc / ada / libgnat / a-swmwco.ads
blobe29f1d10c4b70be5d544236f970b2d4d33dc61f3
1 ------------------------------------------------------------------------------
2 -- --
3 -- GNAT RUN-TIME COMPONENTS --
4 -- --
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 --
6 -- --
7 -- S p e c --
8 -- --
9 -- Copyright (C) 1992-2017, Free Software Foundation, Inc. --
10 -- --
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. --
14 -- --
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. --
21 -- --
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. --
25 -- --
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/>. --
30 -- --
31 -- GNAT was originally developed by the GNAT team at New York University. --
32 -- Extensive contributions were provided by Ada Core Technologies Inc. --
33 -- --
34 ------------------------------------------------------------------------------
36 with Ada.Characters.Wide_Latin_1;
38 package Ada.Strings.Wide_Maps.Wide_Constants is
39 pragma Preelaborate;
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
63 private
64 package W renames Ada.Characters.Wide_Latin_1;
66 subtype WC is Wide_Character;
68 Control_Ranges : aliased constant Wide_Character_Ranges :=
69 ((W.NUL, W.US),
70 (W.DEL, W.APC));
72 Control_Set : constant Wide_Character_Set :=
73 (AF.Controlled with
74 Control_Ranges'Unrestricted_Access);
76 Graphic_Ranges : aliased constant Wide_Character_Ranges :=
77 ((W.Space, W.Tilde),
78 (WC'Val (256), WC'Last));
80 Graphic_Set : constant Wide_Character_Set :=
81 (AF.Controlled with
82 Graphic_Ranges'Unrestricted_Access);
84 Letter_Ranges : aliased constant Wide_Character_Ranges :=
85 (('A', 'Z'),
86 (W.LC_A, W.LC_Z),
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 :=
92 (AF.Controlled with
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 :=
101 (AF.Controlled with
102 Lower_Ranges'Unrestricted_Access);
104 Upper_Ranges : aliased constant Wide_Character_Ranges :=
105 (1 => ('A', 'Z'),
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 :=
110 (AF.Controlled with
111 Upper_Ranges'Unrestricted_Access);
113 Basic_Ranges : aliased constant Wide_Character_Ranges :=
114 (1 => ('A', 'Z'),
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 :=
125 (AF.Controlled with
126 Basic_Ranges'Unrestricted_Access);
128 Decimal_Digit_Ranges : aliased constant Wide_Character_Ranges :=
129 (1 => ('0', '9'));
131 Decimal_Digit_Set : constant Wide_Character_Set :=
132 (AF.Controlled with
133 Decimal_Digit_Ranges'Unrestricted_Access);
135 Hexadecimal_Digit_Ranges : aliased constant Wide_Character_Ranges :=
136 (1 => ('0', '9'),
137 2 => ('A', 'F'),
138 3 => (W.LC_A, W.LC_F));
140 Hexadecimal_Digit_Set : constant Wide_Character_Set :=
141 (AF.Controlled with
142 Hexadecimal_Digit_Ranges'Unrestricted_Access);
144 Alphanumeric_Ranges : aliased constant Wide_Character_Ranges :=
145 (1 => ('0', '9'),
146 2 => ('A', 'Z'),
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 :=
153 (AF.Controlled with
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 :=
166 (AF.Controlled with
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 :=
173 (AF.Controlled with
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 :=
180 (AF.Controlled with
181 Character_Ranges'Unrestricted_Access);
183 Lower_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
184 (Length => 56,
186 Domain =>
187 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
188 W.UC_A_Grave &
189 W.UC_A_Acute &
190 W.UC_A_Circumflex &
191 W.UC_A_Tilde &
192 W.UC_A_Diaeresis &
193 W.UC_A_Ring &
194 W.UC_AE_Diphthong &
195 W.UC_C_Cedilla &
196 W.UC_E_Grave &
197 W.UC_E_Acute &
198 W.UC_E_Circumflex &
199 W.UC_E_Diaeresis &
200 W.UC_I_Grave &
201 W.UC_I_Acute &
202 W.UC_I_Circumflex &
203 W.UC_I_Diaeresis &
204 W.UC_Icelandic_Eth &
205 W.UC_N_Tilde &
206 W.UC_O_Grave &
207 W.UC_O_Acute &
208 W.UC_O_Circumflex &
209 W.UC_O_Tilde &
210 W.UC_O_Diaeresis &
211 W.UC_O_Oblique_Stroke &
212 W.UC_U_Grave &
213 W.UC_U_Acute &
214 W.UC_U_Circumflex &
215 W.UC_U_Diaeresis &
216 W.UC_Y_Acute &
217 W.UC_Icelandic_Thorn,
219 Rangev =>
220 "abcdefghijklmnopqrstuvwxyz" &
221 W.LC_A_Grave &
222 W.LC_A_Acute &
223 W.LC_A_Circumflex &
224 W.LC_A_Tilde &
225 W.LC_A_Diaeresis &
226 W.LC_A_Ring &
227 W.LC_AE_Diphthong &
228 W.LC_C_Cedilla &
229 W.LC_E_Grave &
230 W.LC_E_Acute &
231 W.LC_E_Circumflex &
232 W.LC_E_Diaeresis &
233 W.LC_I_Grave &
234 W.LC_I_Acute &
235 W.LC_I_Circumflex &
236 W.LC_I_Diaeresis &
237 W.LC_Icelandic_Eth &
238 W.LC_N_Tilde &
239 W.LC_O_Grave &
240 W.LC_O_Acute &
241 W.LC_O_Circumflex &
242 W.LC_O_Tilde &
243 W.LC_O_Diaeresis &
244 W.LC_O_Oblique_Stroke &
245 W.LC_U_Grave &
246 W.LC_U_Acute &
247 W.LC_U_Circumflex &
248 W.LC_U_Diaeresis &
249 W.LC_Y_Acute &
250 W.LC_Icelandic_Thorn);
252 Lower_Case_Map : constant Wide_Character_Mapping :=
253 (AF.Controlled with
254 Map => Lower_Case_Mapping'Unrestricted_Access);
256 Upper_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
257 (Length => 56,
259 Domain =>
260 "abcdefghijklmnopqrstuvwxyz" &
261 W.LC_A_Grave &
262 W.LC_A_Acute &
263 W.LC_A_Circumflex &
264 W.LC_A_Tilde &
265 W.LC_A_Diaeresis &
266 W.LC_A_Ring &
267 W.LC_AE_Diphthong &
268 W.LC_C_Cedilla &
269 W.LC_E_Grave &
270 W.LC_E_Acute &
271 W.LC_E_Circumflex &
272 W.LC_E_Diaeresis &
273 W.LC_I_Grave &
274 W.LC_I_Acute &
275 W.LC_I_Circumflex &
276 W.LC_I_Diaeresis &
277 W.LC_Icelandic_Eth &
278 W.LC_N_Tilde &
279 W.LC_O_Grave &
280 W.LC_O_Acute &
281 W.LC_O_Circumflex &
282 W.LC_O_Tilde &
283 W.LC_O_Diaeresis &
284 W.LC_O_Oblique_Stroke &
285 W.LC_U_Grave &
286 W.LC_U_Acute &
287 W.LC_U_Circumflex &
288 W.LC_U_Diaeresis &
289 W.LC_Y_Acute &
290 W.LC_Icelandic_Thorn,
292 Rangev =>
293 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
294 W.UC_A_Grave &
295 W.UC_A_Acute &
296 W.UC_A_Circumflex &
297 W.UC_A_Tilde &
298 W.UC_A_Diaeresis &
299 W.UC_A_Ring &
300 W.UC_AE_Diphthong &
301 W.UC_C_Cedilla &
302 W.UC_E_Grave &
303 W.UC_E_Acute &
304 W.UC_E_Circumflex &
305 W.UC_E_Diaeresis &
306 W.UC_I_Grave &
307 W.UC_I_Acute &
308 W.UC_I_Circumflex &
309 W.UC_I_Diaeresis &
310 W.UC_Icelandic_Eth &
311 W.UC_N_Tilde &
312 W.UC_O_Grave &
313 W.UC_O_Acute &
314 W.UC_O_Circumflex &
315 W.UC_O_Tilde &
316 W.UC_O_Diaeresis &
317 W.UC_O_Oblique_Stroke &
318 W.UC_U_Grave &
319 W.UC_U_Acute &
320 W.UC_U_Circumflex &
321 W.UC_U_Diaeresis &
322 W.UC_Y_Acute &
323 W.UC_Icelandic_Thorn);
325 Upper_Case_Map : constant Wide_Character_Mapping :=
326 (AF.Controlled with
327 Upper_Case_Mapping'Unrestricted_Access);
329 Basic_Mapping : aliased constant Wide_Character_Mapping_Values :=
330 (Length => 55,
332 Domain =>
333 W.UC_A_Grave &
334 W.UC_A_Acute &
335 W.UC_A_Circumflex &
336 W.UC_A_Tilde &
337 W.UC_A_Diaeresis &
338 W.UC_A_Ring &
339 W.UC_C_Cedilla &
340 W.UC_E_Grave &
341 W.UC_E_Acute &
342 W.UC_E_Circumflex &
343 W.UC_E_Diaeresis &
344 W.UC_I_Grave &
345 W.UC_I_Acute &
346 W.UC_I_Circumflex &
347 W.UC_I_Diaeresis &
348 W.UC_N_Tilde &
349 W.UC_O_Grave &
350 W.UC_O_Acute &
351 W.UC_O_Circumflex &
352 W.UC_O_Tilde &
353 W.UC_O_Diaeresis &
354 W.UC_O_Oblique_Stroke &
355 W.UC_U_Grave &
356 W.UC_U_Acute &
357 W.UC_U_Circumflex &
358 W.UC_U_Diaeresis &
359 W.UC_Y_Acute &
360 W.LC_A_Grave &
361 W.LC_A_Acute &
362 W.LC_A_Circumflex &
363 W.LC_A_Tilde &
364 W.LC_A_Diaeresis &
365 W.LC_A_Ring &
366 W.LC_C_Cedilla &
367 W.LC_E_Grave &
368 W.LC_E_Acute &
369 W.LC_E_Circumflex &
370 W.LC_E_Diaeresis &
371 W.LC_I_Grave &
372 W.LC_I_Acute &
373 W.LC_I_Circumflex &
374 W.LC_I_Diaeresis &
375 W.LC_N_Tilde &
376 W.LC_O_Grave &
377 W.LC_O_Acute &
378 W.LC_O_Circumflex &
379 W.LC_O_Tilde &
380 W.LC_O_Diaeresis &
381 W.LC_O_Oblique_Stroke &
382 W.LC_U_Grave &
383 W.LC_U_Acute &
384 W.LC_U_Circumflex &
385 W.LC_U_Diaeresis &
386 W.LC_Y_Acute &
387 W.LC_Y_Diaeresis,
389 Rangev =>
390 'A' & -- UC_A_Grave
391 'A' & -- UC_A_Acute
392 'A' & -- UC_A_Circumflex
393 'A' & -- UC_A_Tilde
394 'A' & -- UC_A_Diaeresis
395 'A' & -- UC_A_Ring
396 'C' & -- UC_C_Cedilla
397 'E' & -- UC_E_Grave
398 'E' & -- UC_E_Acute
399 'E' & -- UC_E_Circumflex
400 'E' & -- UC_E_Diaeresis
401 'I' & -- UC_I_Grave
402 'I' & -- UC_I_Acute
403 'I' & -- UC_I_Circumflex
404 'I' & -- UC_I_Diaeresis
405 'N' & -- UC_N_Tilde
406 'O' & -- UC_O_Grave
407 'O' & -- UC_O_Acute
408 'O' & -- UC_O_Circumflex
409 'O' & -- UC_O_Tilde
410 'O' & -- UC_O_Diaeresis
411 'O' & -- UC_O_Oblique_Stroke
412 'U' & -- UC_U_Grave
413 'U' & -- UC_U_Acute
414 'U' & -- UC_U_Circumflex
415 'U' & -- UC_U_Diaeresis
416 'Y' & -- UC_Y_Acute
417 'a' & -- LC_A_Grave
418 'a' & -- LC_A_Acute
419 'a' & -- LC_A_Circumflex
420 'a' & -- LC_A_Tilde
421 'a' & -- LC_A_Diaeresis
422 'a' & -- LC_A_Ring
423 'c' & -- LC_C_Cedilla
424 'e' & -- LC_E_Grave
425 'e' & -- LC_E_Acute
426 'e' & -- LC_E_Circumflex
427 'e' & -- LC_E_Diaeresis
428 'i' & -- LC_I_Grave
429 'i' & -- LC_I_Acute
430 'i' & -- LC_I_Circumflex
431 'i' & -- LC_I_Diaeresis
432 'n' & -- LC_N_Tilde
433 'o' & -- LC_O_Grave
434 'o' & -- LC_O_Acute
435 'o' & -- LC_O_Circumflex
436 'o' & -- LC_O_Tilde
437 'o' & -- LC_O_Diaeresis
438 'o' & -- LC_O_Oblique_Stroke
439 'u' & -- LC_U_Grave
440 'u' & -- LC_U_Acute
441 'u' & -- LC_U_Circumflex
442 'u' & -- LC_U_Diaeresis
443 'y' & -- LC_Y_Acute
444 'y'); -- LC_Y_Diaeresis
446 Basic_Map : constant Wide_Character_Mapping :=
447 (AF.Controlled with
448 Basic_Mapping'Unrestricted_Access);
450 end Ada.Strings.Wide_Maps.Wide_Constants;