1 ------------------------------------------------------------------------------
3 -- GNAT RUN-TIME COMPONENTS --
5 -- ADA.STRINGS.WIDE_WIDE_MAPS.WIDE_WIDE_CONSTANTS --
9 -- Copyright (C) 1992-2005 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 2, 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. See the GNU General Public License --
21 -- for more details. You should have received a copy of the GNU General --
22 -- Public License distributed with GNAT; see file COPYING. If not, write --
23 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
24 -- MA 02111-1307, USA. --
26 -- As a special exception, if other files instantiate generics from this --
27 -- unit, or you link this unit with other files to produce an executable, --
28 -- this unit does not by itself cause the resulting executable to be --
29 -- covered by the GNU General Public License. This exception does not --
30 -- however invalidate any other reasons why the executable file might be --
31 -- covered by the GNU Public License. --
33 -- GNAT was originally developed by the GNAT team at New York University. --
34 -- Extensive contributions were provided by Ada Core Technologies Inc. --
36 ------------------------------------------------------------------------------
38 with Ada
.Characters
.Wide_Wide_Latin_1
;
40 package Ada
.Strings
.Wide_Wide_Maps
.Wide_Wide_Constants
is
41 pragma Preelaborate
(Wide_Wide_Constants
);
43 Control_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
44 Graphic_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
45 Letter_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
46 Lower_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
47 Upper_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
48 Basic_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
49 Decimal_Digit_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
50 Hexadecimal_Digit_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
51 Alphanumeric_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
52 Special_Graphic_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
53 ISO_646_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
54 Character_Set
: constant Wide_Wide_Maps
.Wide_Wide_Character_Set
;
56 Lower_Case_Map
: constant Wide_Wide_Maps
.Wide_Wide_Character_Mapping
;
57 -- Maps to lower case for letters, else identity
59 Upper_Case_Map
: constant Wide_Wide_Maps
.Wide_Wide_Character_Mapping
;
60 -- Maps to upper case for letters, else identity
62 Basic_Map
: constant Wide_Wide_Maps
.Wide_Wide_Character_Mapping
;
63 -- Maps to basic letter for letters, else identity
66 package W
renames Ada
.Characters
.Wide_Wide_Latin_1
;
68 subtype WC
is Wide_Wide_Character
;
70 Control_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
74 Control_Set
: constant Wide_Wide_Character_Set
:=
76 Control_Ranges
'Unrestricted_Access);
78 Graphic_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
80 (WC
'Val (256), WC
'Last));
82 Graphic_Set
: constant Wide_Wide_Character_Set
:=
84 Graphic_Ranges
'Unrestricted_Access);
86 Letter_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
89 (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
90 (W
.UC_O_Oblique_Stroke
, W
.LC_O_Diaeresis
),
91 (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
93 Letter_Set
: constant Wide_Wide_Character_Set
:=
95 Letter_Ranges
'Unrestricted_Access);
97 Lower_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
98 (1 => (W
.LC_A
, W
.LC_Z
),
99 2 => (W
.LC_German_Sharp_S
, W
.LC_O_Diaeresis
),
100 3 => (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
102 Lower_Set
: constant Wide_Wide_Character_Set
:=
104 Lower_Ranges
'Unrestricted_Access);
106 Upper_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
108 2 => (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
109 3 => (W
.UC_O_Oblique_Stroke
, W
.UC_Icelandic_Thorn
));
111 Upper_Set
: constant Wide_Wide_Character_Set
:=
113 Upper_Ranges
'Unrestricted_Access);
115 Basic_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
117 2 => (W
.LC_A
, W
.LC_Z
),
118 3 => (W
.UC_AE_Diphthong
, W
.UC_AE_Diphthong
),
119 4 => (W
.LC_AE_Diphthong
, W
.LC_AE_Diphthong
),
120 5 => (W
.LC_German_Sharp_S
, W
.LC_German_Sharp_S
),
121 6 => (W
.UC_Icelandic_Thorn
, W
.UC_Icelandic_Thorn
),
122 7 => (W
.LC_Icelandic_Thorn
, W
.LC_Icelandic_Thorn
),
123 8 => (W
.UC_Icelandic_Eth
, W
.UC_Icelandic_Eth
),
124 9 => (W
.LC_Icelandic_Eth
, W
.LC_Icelandic_Eth
));
126 Basic_Set
: constant Wide_Wide_Character_Set
:=
128 Basic_Ranges
'Unrestricted_Access);
130 Decimal_Digit_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
133 Decimal_Digit_Set
: constant Wide_Wide_Character_Set
:=
135 Decimal_Digit_Ranges
'Unrestricted_Access);
137 Hexadecimal_Digit_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
140 3 => (W
.LC_A
, W
.LC_F
));
142 Hexadecimal_Digit_Set
: constant Wide_Wide_Character_Set
:=
144 Hexadecimal_Digit_Ranges
'Unrestricted_Access);
146 Alphanumeric_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
149 3 => (W
.LC_A
, W
.LC_Z
),
150 4 => (W
.UC_A_Grave
, W
.UC_O_Diaeresis
),
151 5 => (W
.UC_O_Oblique_Stroke
, W
.LC_O_Diaeresis
),
152 6 => (W
.LC_O_Oblique_Stroke
, W
.LC_Y_Diaeresis
));
154 Alphanumeric_Set
: constant Wide_Wide_Character_Set
:=
156 Alphanumeric_Ranges
'Unrestricted_Access);
158 Special_Graphic_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
159 (1 => (Wide_Wide_Space
, W
.Solidus
),
160 2 => (W
.Colon
, W
.Commercial_At
),
161 3 => (W
.Left_Square_Bracket
, W
.Grave
),
162 4 => (W
.Left_Curly_Bracket
, W
.Tilde
),
163 5 => (W
.No_Break_Space
, W
.Inverted_Question
),
164 6 => (W
.Multiplication_Sign
, W
.Multiplication_Sign
),
165 7 => (W
.Division_Sign
, W
.Division_Sign
));
167 Special_Graphic_Set
: constant Wide_Wide_Character_Set
:=
169 Special_Graphic_Ranges
'Unrestricted_Access);
171 ISO_646_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
172 (1 => (W
.NUL
, W
.DEL
));
174 ISO_646_Set
: constant Wide_Wide_Character_Set
:=
176 ISO_646_Ranges
'Unrestricted_Access);
178 Character_Ranges
: aliased constant Wide_Wide_Character_Ranges
:=
179 (1 => (W
.NUL
, WC
'Val (255)));
181 Character_Set
: constant Wide_Wide_Character_Set
:=
183 Character_Ranges
'Unrestricted_Access);
186 Lower_Case_Mapping
: aliased constant Wide_Wide_Character_Mapping_Values
:=
190 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
214 W
.UC_O_Oblique_Stroke
&
220 W
.UC_Icelandic_Thorn
,
223 "abcdefghijklmnopqrstuvwxyz" &
247 W
.LC_O_Oblique_Stroke
&
253 W
.LC_Icelandic_Thorn
);
255 Lower_Case_Map
: constant Wide_Wide_Character_Mapping
:=
257 Map
=> Lower_Case_Mapping
'Unrestricted_Access);
259 Upper_Case_Mapping
: aliased constant Wide_Wide_Character_Mapping_Values
:=
263 "abcdefghijklmnopqrstuvwxyz" &
287 W
.LC_O_Oblique_Stroke
&
293 W
.LC_Icelandic_Thorn
,
296 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
320 W
.UC_O_Oblique_Stroke
&
326 W
.UC_Icelandic_Thorn
);
328 Upper_Case_Map
: constant Wide_Wide_Character_Mapping
:=
330 Upper_Case_Mapping
'Unrestricted_Access);
332 Basic_Mapping
: aliased constant Wide_Wide_Character_Mapping_Values
:=
357 W
.UC_O_Oblique_Stroke
&
384 W
.LC_O_Oblique_Stroke
&
395 'A' & -- UC_A_Circumflex
397 'A' & -- UC_A_Diaeresis
399 'C' & -- UC_C_Cedilla
402 'E' & -- UC_E_Circumflex
403 'E' & -- UC_E_Diaeresis
406 'I' & -- UC_I_Circumflex
407 'I' & -- UC_I_Diaeresis
411 'O' & -- UC_O_Circumflex
413 'O' & -- UC_O_Diaeresis
414 'O' & -- UC_O_Oblique_Stroke
417 'U' & -- UC_U_Circumflex
418 'U' & -- UC_U_Diaeresis
422 'a' & -- LC_A_Circumflex
424 'a' & -- LC_A_Diaeresis
426 'c' & -- LC_C_Cedilla
429 'e' & -- LC_E_Circumflex
430 'e' & -- LC_E_Diaeresis
433 'i' & -- LC_I_Circumflex
434 'i' & -- LC_I_Diaeresis
438 'o' & -- LC_O_Circumflex
440 'o' & -- LC_O_Diaeresis
441 'o' & -- LC_O_Oblique_Stroke
444 'u' & -- LC_U_Circumflex
445 'u' & -- LC_U_Diaeresis
447 'y'); -- LC_Y_Diaeresis
449 Basic_Map
: constant Wide_Wide_Character_Mapping
:=
451 Basic_Mapping
'Unrestricted_Access);
453 end Ada
.Strings
.Wide_Wide_Maps
.Wide_Wide_Constants
;