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 --
10 -- Copyright (C) 1992-2001 Free Software Foundation, Inc. --
12 -- This specification is derived from the Ada Reference Manual for use with --
13 -- GNAT. The copyright notice above, and the license provisions that follow --
14 -- apply solely to the contents of the part following the private keyword. --
16 -- GNAT is free software; you can redistribute it and/or modify it under --
17 -- terms of the GNU General Public License as published by the Free Soft- --
18 -- ware Foundation; either version 2, or (at your option) any later ver- --
19 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
20 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
21 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
22 -- for more details. You should have received a copy of the GNU General --
23 -- Public License distributed with GNAT; see file COPYING. If not, write --
24 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
25 -- MA 02111-1307, USA. --
27 -- As a special exception, if other files instantiate generics from this --
28 -- unit, or you link this unit with other files to produce an executable, --
29 -- this unit does not by itself cause the resulting executable to be --
30 -- covered by the GNU General Public License. This exception does not --
31 -- however invalidate any other reasons why the executable file might be --
32 -- covered by the GNU Public License. --
34 -- GNAT was originally developed by the GNAT team at New York University. --
35 -- Extensive contributions were provided by Ada Core Technologies Inc. --
37 ------------------------------------------------------------------------------
39 with Ada
.Characters
.Wide_Latin_1
;
41 package Ada
.Strings
.Wide_Maps
.Wide_Constants
is
42 pragma Preelaborate
(Wide_Constants
);
44 Control_Set
: constant Wide_Maps
.Wide_Character_Set
;
45 Graphic_Set
: constant Wide_Maps
.Wide_Character_Set
;
46 Letter_Set
: constant Wide_Maps
.Wide_Character_Set
;
47 Lower_Set
: constant Wide_Maps
.Wide_Character_Set
;
48 Upper_Set
: constant Wide_Maps
.Wide_Character_Set
;
49 Basic_Set
: constant Wide_Maps
.Wide_Character_Set
;
50 Decimal_Digit_Set
: constant Wide_Maps
.Wide_Character_Set
;
51 Hexadecimal_Digit_Set
: constant Wide_Maps
.Wide_Character_Set
;
52 Alphanumeric_Set
: constant Wide_Maps
.Wide_Character_Set
;
53 Special_Graphic_Set
: constant Wide_Maps
.Wide_Character_Set
;
54 ISO_646_Set
: constant Wide_Maps
.Wide_Character_Set
;
55 Character_Set
: constant Wide_Maps
.Wide_Character_Set
;
57 Lower_Case_Map
: constant Wide_Maps
.Wide_Character_Mapping
;
58 -- Maps to lower case for letters, else identity
60 Upper_Case_Map
: constant Wide_Maps
.Wide_Character_Mapping
;
61 -- Maps to upper case for letters, else identity
63 Basic_Map
: constant Wide_Maps
.Wide_Character_Mapping
;
64 -- Maps to basic letter for letters, else identity
67 package W
renames Ada
.Characters
.Wide_Latin_1
;
69 subtype WC
is Wide_Character;
71 Control_Ranges
: aliased constant Wide_Character_Ranges
:=
75 Control_Set
: constant Wide_Character_Set
:=
77 Control_Ranges
'Unrestricted_Access);
79 Graphic_Ranges
: aliased constant Wide_Character_Ranges
:=
81 (WC
'Val (256), WC
'Last));
83 Graphic_Set
: constant Wide_Character_Set
:=
85 Graphic_Ranges
'Unrestricted_Access);
87 Letter_Ranges
: aliased constant Wide_Character_Ranges
:=
90 (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
91 (W
.UC_O_Oblique_Stroke
, W
.LC_O_Diaeresis
),
92 (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
94 Letter_Set
: constant Wide_Character_Set
:=
96 Letter_Ranges
'Unrestricted_Access);
98 Lower_Ranges
: aliased constant Wide_Character_Ranges
:=
99 (1 => (W
.LC_A
, W
.LC_Z
),
100 2 => (W
.LC_German_Sharp_S
, W
.LC_O_Diaeresis
),
101 3 => (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
103 Lower_Set
: constant Wide_Character_Set
:=
105 Lower_Ranges
'Unrestricted_Access);
107 Upper_Ranges
: aliased constant Wide_Character_Ranges
:=
109 2 => (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
110 3 => (W
.UC_O_Oblique_Stroke
, W
.UC_Icelandic_Thorn
));
112 Upper_Set
: constant Wide_Character_Set
:=
114 Upper_Ranges
'Unrestricted_Access);
116 Basic_Ranges
: aliased constant Wide_Character_Ranges
:=
118 2 => (W
.LC_A
, W
.LC_Z
),
119 3 => (W
.UC_AE_Diphthong
, W
.UC_AE_Diphthong
),
120 4 => (W
.LC_AE_Diphthong
, W
.LC_AE_Diphthong
),
121 5 => (W
.LC_German_Sharp_S
, W
.LC_German_Sharp_S
),
122 6 => (W
.UC_Icelandic_Thorn
, W
.UC_Icelandic_Thorn
),
123 7 => (W
.LC_Icelandic_Thorn
, W
.LC_Icelandic_Thorn
),
124 8 => (W
.UC_Icelandic_Eth
, W
.UC_Icelandic_Eth
),
125 9 => (W
.LC_Icelandic_Eth
, W
.LC_Icelandic_Eth
));
127 Basic_Set
: constant Wide_Character_Set
:=
129 Basic_Ranges
'Unrestricted_Access);
131 Decimal_Digit_Ranges
: aliased constant Wide_Character_Ranges
:=
134 Decimal_Digit_Set
: constant Wide_Character_Set
:=
136 Decimal_Digit_Ranges
'Unrestricted_Access);
138 Hexadecimal_Digit_Ranges
: aliased constant Wide_Character_Ranges
:=
141 3 => (W
.LC_A
, W
.LC_F
));
143 Hexadecimal_Digit_Set
: constant Wide_Character_Set
:=
145 Hexadecimal_Digit_Ranges
'Unrestricted_Access);
147 Alphanumeric_Ranges
: aliased constant Wide_Character_Ranges
:=
150 3 => (W
.LC_A
, W
.LC_Z
),
151 4 => (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
152 5 => (W
.UC_O_Oblique_Stroke
, W
.LC_O_Diaeresis
),
153 6 => (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
155 Alphanumeric_Set
: constant Wide_Character_Set
:=
157 Alphanumeric_Ranges
'Unrestricted_Access);
159 Special_Graphic_Ranges
: aliased constant Wide_Character_Ranges
:=
160 (1 => (Wide_Space
, W
.Solidus
),
161 2 => (W
.Colon
, W
.Commercial_At
),
162 3 => (W
.Left_Square_Bracket
, W
.Grave
),
163 4 => (W
.Left_Curly_Bracket
, W
.Tilde
),
164 5 => (W
.No_Break_Space
, W
.Inverted_Question
),
165 6 => (W
.Multiplication_Sign
, W
.Multiplication_Sign
),
166 7 => (W
.Division_Sign
, W
.Division_Sign
));
168 Special_Graphic_Set
: constant Wide_Character_Set
:=
170 Special_Graphic_Ranges
'Unrestricted_Access);
172 ISO_646_Ranges
: aliased constant Wide_Character_Ranges
:=
173 (1 => (W
.NUL
, W
.DEL
));
175 ISO_646_Set
: constant Wide_Character_Set
:=
177 ISO_646_Ranges
'Unrestricted_Access);
179 Character_Ranges
: aliased constant Wide_Character_Ranges
:=
180 (1 => (W
.NUL
, WC
'Val (255)));
182 Character_Set
: constant Wide_Character_Set
:=
184 Character_Ranges
'Unrestricted_Access);
187 Lower_Case_Mapping
: aliased constant Wide_Character_Mapping_Values
:=
191 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
215 W
.UC_O_Oblique_Stroke
&
221 W
.UC_Icelandic_Thorn
,
224 "abcdefghijklmnopqrstuvwxyz" &
248 W
.LC_O_Oblique_Stroke
&
254 W
.LC_Icelandic_Thorn
);
256 Lower_Case_Map
: constant Wide_Character_Mapping
:=
258 Map
=> Lower_Case_Mapping
'Unrestricted_Access);
260 Upper_Case_Mapping
: aliased constant Wide_Character_Mapping_Values
:=
264 "abcdefghijklmnopqrstuvwxyz" &
288 W
.LC_O_Oblique_Stroke
&
294 W
.LC_Icelandic_Thorn
,
297 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
321 W
.UC_O_Oblique_Stroke
&
327 W
.UC_Icelandic_Thorn
);
329 Upper_Case_Map
: constant Wide_Character_Mapping
:=
331 Upper_Case_Mapping
'Unrestricted_Access);
333 Basic_Mapping
: aliased constant Wide_Character_Mapping_Values
:=
358 W
.UC_O_Oblique_Stroke
&
385 W
.LC_O_Oblique_Stroke
&
396 'A' & -- UC_A_Circumflex
398 'A' & -- UC_A_Diaeresis
400 'C' & -- UC_C_Cedilla
403 'E' & -- UC_E_Circumflex
404 'E' & -- UC_E_Diaeresis
407 'I' & -- UC_I_Circumflex
408 'I' & -- UC_I_Diaeresis
412 'O' & -- UC_O_Circumflex
414 'O' & -- UC_O_Diaeresis
415 'O' & -- UC_O_Oblique_Stroke
418 'U' & -- UC_U_Circumflex
419 'U' & -- UC_U_Diaeresis
423 'a' & -- LC_A_Circumflex
425 'a' & -- LC_A_Diaeresis
427 'c' & -- LC_C_Cedilla
430 'e' & -- LC_E_Circumflex
431 'e' & -- LC_E_Diaeresis
434 'i' & -- LC_I_Circumflex
435 'i' & -- LC_I_Diaeresis
439 'o' & -- LC_O_Circumflex
441 'o' & -- LC_O_Diaeresis
442 'o' & -- LC_O_Oblique_Stroke
445 'u' & -- LC_U_Circumflex
446 'u' & -- LC_U_Diaeresis
448 'y'); -- LC_Y_Diaeresis
450 Basic_Map
: constant Wide_Character_Mapping
:=
452 Basic_Mapping
'Unrestricted_Access);
454 end Ada
.Strings
.Wide_Maps
.Wide_Constants
;