OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / ada / a-szmzco.ads
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT RUN-TIME COMPONENTS                         --
4 --                                                                          --
5 --              ADA.STRINGS.WIDE_WIDE_MAPS.WIDE_WIDE_CONSTANTS              --
6 --                                                                          --
7 --                                 S p e c                                  --
8 --                                                                          --
9 --          Copyright (C) 1992-2005 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 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,  51  Franklin  Street,  Fifth  Floor, --
24 -- Boston, MA 02110-1301, USA.                                              --
25 --                                                                          --
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.                                      --
32 --                                                                          --
33 -- GNAT was originally developed  by the GNAT team at  New York University. --
34 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
35 --                                                                          --
36 ------------------------------------------------------------------------------
37
38 with Ada.Characters.Wide_Wide_Latin_1;
39
40 package Ada.Strings.Wide_Wide_Maps.Wide_Wide_Constants is
41    pragma Preelaborate;
42
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;
55
56    Lower_Case_Map        : constant Wide_Wide_Maps.Wide_Wide_Character_Mapping;
57    --  Maps to lower case for letters, else identity
58
59    Upper_Case_Map        : constant Wide_Wide_Maps.Wide_Wide_Character_Mapping;
60    --  Maps to upper case for letters, else identity
61
62    Basic_Map             : constant Wide_Wide_Maps.Wide_Wide_Character_Mapping;
63    --  Maps to basic letter for letters, else identity
64
65 private
66    package W renames Ada.Characters.Wide_Wide_Latin_1;
67
68    subtype WC is Wide_Wide_Character;
69
70    Control_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
71      ((W.NUL, W.US),
72       (W.DEL, W.APC));
73
74    Control_Set              : constant Wide_Wide_Character_Set :=
75      (AF.Controlled with
76       Control_Ranges'Unrestricted_Access);
77
78    Graphic_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
79      ((W.Space,       W.Tilde),
80       (WC'Val (256), WC'Last));
81
82    Graphic_Set              : constant Wide_Wide_Character_Set :=
83      (AF.Controlled with
84       Graphic_Ranges'Unrestricted_Access);
85
86    Letter_Ranges            : aliased constant Wide_Wide_Character_Ranges :=
87      (('A',                   'Z'),
88       (W.LC_A,                W.LC_Z),
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));
92
93    Letter_Set               : constant Wide_Wide_Character_Set :=
94      (AF.Controlled with
95       Letter_Ranges'Unrestricted_Access);
96
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));
101
102    Lower_Set                : constant Wide_Wide_Character_Set :=
103      (AF.Controlled with
104       Lower_Ranges'Unrestricted_Access);
105
106    Upper_Ranges             : aliased constant Wide_Wide_Character_Ranges :=
107      (1 => ('A',                   'Z'),
108       2 => (W.UC_A_Grave,          W.UC_O_Diaeresis),
109       3 => (W.UC_O_Oblique_Stroke, W.UC_Icelandic_Thorn));
110
111    Upper_Set                : constant Wide_Wide_Character_Set :=
112      (AF.Controlled with
113       Upper_Ranges'Unrestricted_Access);
114
115    Basic_Ranges             : aliased constant Wide_Wide_Character_Ranges :=
116      (1 => ('A',                   'Z'),
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));
125
126    Basic_Set                : constant Wide_Wide_Character_Set :=
127      (AF.Controlled with
128       Basic_Ranges'Unrestricted_Access);
129
130    Decimal_Digit_Ranges     : aliased constant Wide_Wide_Character_Ranges :=
131      (1 => ('0', '9'));
132
133    Decimal_Digit_Set        : constant Wide_Wide_Character_Set :=
134      (AF.Controlled with
135       Decimal_Digit_Ranges'Unrestricted_Access);
136
137    Hexadecimal_Digit_Ranges : aliased constant Wide_Wide_Character_Ranges :=
138      (1 => ('0', '9'),
139       2 => ('A', 'F'),
140       3 => (W.LC_A, W.LC_F));
141
142    Hexadecimal_Digit_Set    : constant Wide_Wide_Character_Set :=
143      (AF.Controlled with
144       Hexadecimal_Digit_Ranges'Unrestricted_Access);
145
146    Alphanumeric_Ranges      : aliased constant Wide_Wide_Character_Ranges :=
147      (1 => ('0',                   '9'),
148       2 => ('A',                   'Z'),
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));
153
154    Alphanumeric_Set         : constant Wide_Wide_Character_Set :=
155      (AF.Controlled with
156       Alphanumeric_Ranges'Unrestricted_Access);
157
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));
166
167    Special_Graphic_Set      : constant Wide_Wide_Character_Set :=
168      (AF.Controlled with
169       Special_Graphic_Ranges'Unrestricted_Access);
170
171    ISO_646_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
172      (1 => (W.NUL, W.DEL));
173
174    ISO_646_Set              : constant Wide_Wide_Character_Set :=
175      (AF.Controlled with
176       ISO_646_Ranges'Unrestricted_Access);
177
178    Character_Ranges         : aliased constant Wide_Wide_Character_Ranges :=
179      (1 => (W.NUL, WC'Val (255)));
180
181    Character_Set            : constant Wide_Wide_Character_Set :=
182      (AF.Controlled with
183       Character_Ranges'Unrestricted_Access);
184
185    Lower_Case_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
186      (Length => 56,
187
188       Domain =>
189         "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
190          W.UC_A_Grave                &
191          W.UC_A_Acute                &
192          W.UC_A_Circumflex           &
193          W.UC_A_Tilde                &
194          W.UC_A_Diaeresis            &
195          W.UC_A_Ring                 &
196          W.UC_AE_Diphthong           &
197          W.UC_C_Cedilla              &
198          W.UC_E_Grave                &
199          W.UC_E_Acute                &
200          W.UC_E_Circumflex           &
201          W.UC_E_Diaeresis            &
202          W.UC_I_Grave                &
203          W.UC_I_Acute                &
204          W.UC_I_Circumflex           &
205          W.UC_I_Diaeresis            &
206          W.UC_Icelandic_Eth          &
207          W.UC_N_Tilde                &
208          W.UC_O_Grave                &
209          W.UC_O_Acute                &
210          W.UC_O_Circumflex           &
211          W.UC_O_Tilde                &
212          W.UC_O_Diaeresis            &
213          W.UC_O_Oblique_Stroke       &
214          W.UC_U_Grave                &
215          W.UC_U_Acute                &
216          W.UC_U_Circumflex           &
217          W.UC_U_Diaeresis            &
218          W.UC_Y_Acute                &
219          W.UC_Icelandic_Thorn,
220
221       Rangev =>
222         "abcdefghijklmnopqrstuvwxyz" &
223          W.LC_A_Grave                &
224          W.LC_A_Acute                &
225          W.LC_A_Circumflex           &
226          W.LC_A_Tilde                &
227          W.LC_A_Diaeresis            &
228          W.LC_A_Ring                 &
229          W.LC_AE_Diphthong           &
230          W.LC_C_Cedilla              &
231          W.LC_E_Grave                &
232          W.LC_E_Acute                &
233          W.LC_E_Circumflex           &
234          W.LC_E_Diaeresis            &
235          W.LC_I_Grave                &
236          W.LC_I_Acute                &
237          W.LC_I_Circumflex           &
238          W.LC_I_Diaeresis            &
239          W.LC_Icelandic_Eth          &
240          W.LC_N_Tilde                &
241          W.LC_O_Grave                &
242          W.LC_O_Acute                &
243          W.LC_O_Circumflex           &
244          W.LC_O_Tilde                &
245          W.LC_O_Diaeresis            &
246          W.LC_O_Oblique_Stroke       &
247          W.LC_U_Grave                &
248          W.LC_U_Acute                &
249          W.LC_U_Circumflex           &
250          W.LC_U_Diaeresis            &
251          W.LC_Y_Acute                &
252          W.LC_Icelandic_Thorn);
253
254    Lower_Case_Map : constant Wide_Wide_Character_Mapping :=
255      (AF.Controlled with
256       Map => Lower_Case_Mapping'Unrestricted_Access);
257
258    Upper_Case_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
259      (Length => 56,
260
261       Domain =>
262         "abcdefghijklmnopqrstuvwxyz" &
263          W.LC_A_Grave                &
264          W.LC_A_Acute                &
265          W.LC_A_Circumflex           &
266          W.LC_A_Tilde                &
267          W.LC_A_Diaeresis            &
268          W.LC_A_Ring                 &
269          W.LC_AE_Diphthong           &
270          W.LC_C_Cedilla              &
271          W.LC_E_Grave                &
272          W.LC_E_Acute                &
273          W.LC_E_Circumflex           &
274          W.LC_E_Diaeresis            &
275          W.LC_I_Grave                &
276          W.LC_I_Acute                &
277          W.LC_I_Circumflex           &
278          W.LC_I_Diaeresis            &
279          W.LC_Icelandic_Eth          &
280          W.LC_N_Tilde                &
281          W.LC_O_Grave                &
282          W.LC_O_Acute                &
283          W.LC_O_Circumflex           &
284          W.LC_O_Tilde                &
285          W.LC_O_Diaeresis            &
286          W.LC_O_Oblique_Stroke       &
287          W.LC_U_Grave                &
288          W.LC_U_Acute                &
289          W.LC_U_Circumflex           &
290          W.LC_U_Diaeresis            &
291          W.LC_Y_Acute                &
292          W.LC_Icelandic_Thorn,
293
294       Rangev =>
295         "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
296          W.UC_A_Grave                &
297          W.UC_A_Acute                &
298          W.UC_A_Circumflex           &
299          W.UC_A_Tilde                &
300          W.UC_A_Diaeresis            &
301          W.UC_A_Ring                 &
302          W.UC_AE_Diphthong           &
303          W.UC_C_Cedilla              &
304          W.UC_E_Grave                &
305          W.UC_E_Acute                &
306          W.UC_E_Circumflex           &
307          W.UC_E_Diaeresis            &
308          W.UC_I_Grave                &
309          W.UC_I_Acute                &
310          W.UC_I_Circumflex           &
311          W.UC_I_Diaeresis            &
312          W.UC_Icelandic_Eth          &
313          W.UC_N_Tilde                &
314          W.UC_O_Grave                &
315          W.UC_O_Acute                &
316          W.UC_O_Circumflex           &
317          W.UC_O_Tilde                &
318          W.UC_O_Diaeresis            &
319          W.UC_O_Oblique_Stroke       &
320          W.UC_U_Grave                &
321          W.UC_U_Acute                &
322          W.UC_U_Circumflex           &
323          W.UC_U_Diaeresis            &
324          W.UC_Y_Acute                &
325          W.UC_Icelandic_Thorn);
326
327    Upper_Case_Map : constant Wide_Wide_Character_Mapping :=
328      (AF.Controlled with
329       Upper_Case_Mapping'Unrestricted_Access);
330
331    Basic_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
332      (Length => 55,
333
334       Domain =>
335         W.UC_A_Grave          &
336         W.UC_A_Acute          &
337         W.UC_A_Circumflex     &
338         W.UC_A_Tilde          &
339         W.UC_A_Diaeresis      &
340         W.UC_A_Ring           &
341         W.UC_C_Cedilla        &
342         W.UC_E_Grave          &
343         W.UC_E_Acute          &
344         W.UC_E_Circumflex     &
345         W.UC_E_Diaeresis      &
346         W.UC_I_Grave          &
347         W.UC_I_Acute          &
348         W.UC_I_Circumflex     &
349         W.UC_I_Diaeresis      &
350         W.UC_N_Tilde          &
351         W.UC_O_Grave          &
352         W.UC_O_Acute          &
353         W.UC_O_Circumflex     &
354         W.UC_O_Tilde          &
355         W.UC_O_Diaeresis      &
356         W.UC_O_Oblique_Stroke &
357         W.UC_U_Grave          &
358         W.UC_U_Acute          &
359         W.UC_U_Circumflex     &
360         W.UC_U_Diaeresis      &
361         W.UC_Y_Acute          &
362         W.LC_A_Grave          &
363         W.LC_A_Acute          &
364         W.LC_A_Circumflex     &
365         W.LC_A_Tilde          &
366         W.LC_A_Diaeresis      &
367         W.LC_A_Ring           &
368         W.LC_C_Cedilla        &
369         W.LC_E_Grave          &
370         W.LC_E_Acute          &
371         W.LC_E_Circumflex     &
372         W.LC_E_Diaeresis      &
373         W.LC_I_Grave          &
374         W.LC_I_Acute          &
375         W.LC_I_Circumflex     &
376         W.LC_I_Diaeresis      &
377         W.LC_N_Tilde          &
378         W.LC_O_Grave          &
379         W.LC_O_Acute          &
380         W.LC_O_Circumflex     &
381         W.LC_O_Tilde          &
382         W.LC_O_Diaeresis      &
383         W.LC_O_Oblique_Stroke &
384         W.LC_U_Grave          &
385         W.LC_U_Acute          &
386         W.LC_U_Circumflex     &
387         W.LC_U_Diaeresis      &
388         W.LC_Y_Acute          &
389         W.LC_Y_Diaeresis,
390
391       Rangev =>
392         'A'        &  -- UC_A_Grave
393         'A'        &  -- UC_A_Acute
394         'A'        &  -- UC_A_Circumflex
395         'A'        &  -- UC_A_Tilde
396         'A'        &  -- UC_A_Diaeresis
397         'A'        &  -- UC_A_Ring
398         'C'        &  -- UC_C_Cedilla
399         'E'        &  -- UC_E_Grave
400         'E'        &  -- UC_E_Acute
401         'E'        &  -- UC_E_Circumflex
402         'E'        &  -- UC_E_Diaeresis
403         'I'        &  -- UC_I_Grave
404         'I'        &  -- UC_I_Acute
405         'I'        &  -- UC_I_Circumflex
406         'I'        &  -- UC_I_Diaeresis
407         'N'        &  -- UC_N_Tilde
408         'O'        &  -- UC_O_Grave
409         'O'        &  -- UC_O_Acute
410         'O'        &  -- UC_O_Circumflex
411         'O'        &  -- UC_O_Tilde
412         'O'        &  -- UC_O_Diaeresis
413         'O'        &  -- UC_O_Oblique_Stroke
414         'U'        &  -- UC_U_Grave
415         'U'        &  -- UC_U_Acute
416         'U'        &  -- UC_U_Circumflex
417         'U'        &  -- UC_U_Diaeresis
418         'Y'        &  -- UC_Y_Acute
419         'a'        &  -- LC_A_Grave
420         'a'        &  -- LC_A_Acute
421         'a'        &  -- LC_A_Circumflex
422         'a'        &  -- LC_A_Tilde
423         'a'        &  -- LC_A_Diaeresis
424         'a'        &  -- LC_A_Ring
425         'c'        &  -- LC_C_Cedilla
426         'e'        &  -- LC_E_Grave
427         'e'        &  -- LC_E_Acute
428         'e'        &  -- LC_E_Circumflex
429         'e'        &  -- LC_E_Diaeresis
430         'i'        &  -- LC_I_Grave
431         'i'        &  -- LC_I_Acute
432         'i'        &  -- LC_I_Circumflex
433         'i'        &  -- LC_I_Diaeresis
434         'n'        &  -- LC_N_Tilde
435         'o'        &  -- LC_O_Grave
436         'o'        &  -- LC_O_Acute
437         'o'        &  -- LC_O_Circumflex
438         'o'        &  -- LC_O_Tilde
439         'o'        &  -- LC_O_Diaeresis
440         'o'        &  -- LC_O_Oblique_Stroke
441         'u'        &  -- LC_U_Grave
442         'u'        &  -- LC_U_Acute
443         'u'        &  -- LC_U_Circumflex
444         'u'        &  -- LC_U_Diaeresis
445         'y'        &  -- LC_Y_Acute
446         'y');         -- LC_Y_Diaeresis
447
448    Basic_Map : constant Wide_Wide_Character_Mapping :=
449      (AF.Controlled with
450       Basic_Mapping'Unrestricted_Access);
451
452 end Ada.Strings.Wide_Wide_Maps.Wide_Wide_Constants;