1------------------------------------------------------------------------------
2--                                                                          --
3--                         GNAT RUNTIME COMPONENTS                          --
4--                                                                          --
5--          A D A . C H A R A C T E R S . W I D E _ L A T I N _ 9           --
6--                                                                          --
7--                                 S p e c                                  --
8--                                                                          --
9--          Copyright (C) 1992-2002 Free Software Foundation, Inc.          --
10--                                                                          --
11-- GNAT is free software;  you can  redistribute it  and/or modify it under --
12-- terms of the  GNU General Public License as published  by the Free Soft- --
13-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
14-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
17-- for  more details.  You should have  received  a copy of the GNU General --
18-- Public License  distributed with GNAT;  see file COPYING.  If not, write --
19-- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
20-- MA 02111-1307, USA.                                                      --
21--                                                                          --
22-- As a special exception,  if other files  instantiate  generics from this --
23-- unit, or you link  this unit with other files  to produce an executable, --
24-- this  unit  does not  by itself cause  the resulting  executable  to  be --
25-- covered  by the  GNU  General  Public  License.  This exception does not --
26-- however invalidate  any other reasons why  the executable file  might be --
27-- covered by the  GNU Public License.                                      --
28--                                                                          --
29-- GNAT was originally developed  by the GNAT team at  New York University. --
30-- Extensive contributions were provided by Ada Core Technologies Inc.      --
31--                                                                          --
32------------------------------------------------------------------------------
33
34--  This package provides definitions analogous to those in the GNAT
35--  package Ada.Characters.Latin_9 except that the type of the constants
36--  is Wide_Character instead of Character. The provision of this package
37--  is in accordance with the implementation permission in RM (A.3.3(27)).
38
39package Ada.Characters.Wide_Latin_9 is
40pragma Pure (Wide_Latin_9);
41
42   ------------------------
43   -- Control Characters --
44   ------------------------
45
46   NUL                  : constant Wide_Character := Wide_Character'Val (0);
47   SOH                  : constant Wide_Character := Wide_Character'Val (1);
48   STX                  : constant Wide_Character := Wide_Character'Val (2);
49   ETX                  : constant Wide_Character := Wide_Character'Val (3);
50   EOT                  : constant Wide_Character := Wide_Character'Val (4);
51   ENQ                  : constant Wide_Character := Wide_Character'Val (5);
52   ACK                  : constant Wide_Character := Wide_Character'Val (6);
53   BEL                  : constant Wide_Character := Wide_Character'Val (7);
54   BS                   : constant Wide_Character := Wide_Character'Val (8);
55   HT                   : constant Wide_Character := Wide_Character'Val (9);
56   LF                   : constant Wide_Character := Wide_Character'Val (10);
57   VT                   : constant Wide_Character := Wide_Character'Val (11);
58   FF                   : constant Wide_Character := Wide_Character'Val (12);
59   CR                   : constant Wide_Character := Wide_Character'Val (13);
60   SO                   : constant Wide_Character := Wide_Character'Val (14);
61   SI                   : constant Wide_Character := Wide_Character'Val (15);
62
63   DLE                  : constant Wide_Character := Wide_Character'Val (16);
64   DC1                  : constant Wide_Character := Wide_Character'Val (17);
65   DC2                  : constant Wide_Character := Wide_Character'Val (18);
66   DC3                  : constant Wide_Character := Wide_Character'Val (19);
67   DC4                  : constant Wide_Character := Wide_Character'Val (20);
68   NAK                  : constant Wide_Character := Wide_Character'Val (21);
69   SYN                  : constant Wide_Character := Wide_Character'Val (22);
70   ETB                  : constant Wide_Character := Wide_Character'Val (23);
71   CAN                  : constant Wide_Character := Wide_Character'Val (24);
72   EM                   : constant Wide_Character := Wide_Character'Val (25);
73   SUB                  : constant Wide_Character := Wide_Character'Val (26);
74   ESC                  : constant Wide_Character := Wide_Character'Val (27);
75   FS                   : constant Wide_Character := Wide_Character'Val (28);
76   GS                   : constant Wide_Character := Wide_Character'Val (29);
77   RS                   : constant Wide_Character := Wide_Character'Val (30);
78   US                   : constant Wide_Character := Wide_Character'Val (31);
79
80   -------------------------------------
81   -- ISO 646 Graphic Wide_Characters --
82   -------------------------------------
83
84   Space                : constant Wide_Character := ' ';  -- WC'Val(32)
85   Exclamation          : constant Wide_Character := '!';  -- WC'Val(33)
86   Quotation            : constant Wide_Character := '"';  -- WC'Val(34)
87   Number_Sign          : constant Wide_Character := '#';  -- WC'Val(35)
88   Dollar_Sign          : constant Wide_Character := '$';  -- WC'Val(36)
89   Percent_Sign         : constant Wide_Character := '%';  -- WC'Val(37)
90   Ampersand            : constant Wide_Character := '&';  -- WC'Val(38)
91   Apostrophe           : constant Wide_Character := ''';  -- WC'Val(39)
92   Left_Parenthesis     : constant Wide_Character := '(';  -- WC'Val(40)
93   Right_Parenthesis    : constant Wide_Character := ')';  -- WC'Val(41)
94   Asterisk             : constant Wide_Character := '*';  -- WC'Val(42)
95   Plus_Sign            : constant Wide_Character := '+';  -- WC'Val(43)
96   Comma                : constant Wide_Character := ',';  -- WC'Val(44)
97   Hyphen               : constant Wide_Character := '-';  -- WC'Val(45)
98   Minus_Sign           : Wide_Character renames Hyphen;
99   Full_Stop            : constant Wide_Character := '.';  -- WC'Val(46)
100   Solidus              : constant Wide_Character := '/';  -- WC'Val(47)
101
102   --  Decimal digits '0' though '9' are at positions 48 through 57
103
104   Colon                : constant Wide_Character := ':';  -- WC'Val(58)
105   Semicolon            : constant Wide_Character := ';';  -- WC'Val(59)
106   Less_Than_Sign       : constant Wide_Character := '<';  -- WC'Val(60)
107   Equals_Sign          : constant Wide_Character := '=';  -- WC'Val(61)
108   Greater_Than_Sign    : constant Wide_Character := '>';  -- WC'Val(62)
109   Question             : constant Wide_Character := '?';  -- WC'Val(63)
110
111   Commercial_At        : constant Wide_Character := '@';  -- WC'Val(64)
112
113   --  Letters 'A' through 'Z' are at positions 65 through 90
114
115   Left_Square_Bracket  : constant Wide_Character := '[';  -- WC'Val (91)
116   Reverse_Solidus      : constant Wide_Character := '\';  -- WC'Val (92)
117   Right_Square_Bracket : constant Wide_Character := ']';  -- WC'Val (93)
118   Circumflex           : constant Wide_Character := '^';  -- WC'Val (94)
119   Low_Line             : constant Wide_Character := '_';  -- WC'Val (95)
120
121   Grave                : constant Wide_Character := '`';  -- WC'Val (96)
122   LC_A                 : constant Wide_Character := 'a';  -- WC'Val (97)
123   LC_B                 : constant Wide_Character := 'b';  -- WC'Val (98)
124   LC_C                 : constant Wide_Character := 'c';  -- WC'Val (99)
125   LC_D                 : constant Wide_Character := 'd';  -- WC'Val (100)
126   LC_E                 : constant Wide_Character := 'e';  -- WC'Val (101)
127   LC_F                 : constant Wide_Character := 'f';  -- WC'Val (102)
128   LC_G                 : constant Wide_Character := 'g';  -- WC'Val (103)
129   LC_H                 : constant Wide_Character := 'h';  -- WC'Val (104)
130   LC_I                 : constant Wide_Character := 'i';  -- WC'Val (105)
131   LC_J                 : constant Wide_Character := 'j';  -- WC'Val (106)
132   LC_K                 : constant Wide_Character := 'k';  -- WC'Val (107)
133   LC_L                 : constant Wide_Character := 'l';  -- WC'Val (108)
134   LC_M                 : constant Wide_Character := 'm';  -- WC'Val (109)
135   LC_N                 : constant Wide_Character := 'n';  -- WC'Val (110)
136   LC_O                 : constant Wide_Character := 'o';  -- WC'Val (111)
137   LC_P                 : constant Wide_Character := 'p';  -- WC'Val (112)
138   LC_Q                 : constant Wide_Character := 'q';  -- WC'Val (113)
139   LC_R                 : constant Wide_Character := 'r';  -- WC'Val (114)
140   LC_S                 : constant Wide_Character := 's';  -- WC'Val (115)
141   LC_T                 : constant Wide_Character := 't';  -- WC'Val (116)
142   LC_U                 : constant Wide_Character := 'u';  -- WC'Val (117)
143   LC_V                 : constant Wide_Character := 'v';  -- WC'Val (118)
144   LC_W                 : constant Wide_Character := 'w';  -- WC'Val (119)
145   LC_X                 : constant Wide_Character := 'x';  -- WC'Val (120)
146   LC_Y                 : constant Wide_Character := 'y';  -- WC'Val (121)
147   LC_Z                 : constant Wide_Character := 'z';  -- WC'Val (122)
148   Left_Curly_Bracket   : constant Wide_Character := '{';  -- WC'Val (123)
149   Vertical_Line        : constant Wide_Character := '|';  -- WC'Val (124)
150   Right_Curly_Bracket  : constant Wide_Character := '}';  -- WC'Val (125)
151   Tilde                : constant Wide_Character := '~';  -- WC'Val (126)
152   DEL                  : constant Wide_Character := Wide_Character'Val (127);
153
154   --------------------------------------
155   -- ISO 6429 Control Wide_Characters --
156   --------------------------------------
157
158   IS4 : Wide_Character renames FS;
159   IS3 : Wide_Character renames GS;
160   IS2 : Wide_Character renames RS;
161   IS1 : Wide_Character renames US;
162
163   Reserved_128         : constant Wide_Character := Wide_Character'Val (128);
164   Reserved_129         : constant Wide_Character := Wide_Character'Val (129);
165   BPH                  : constant Wide_Character := Wide_Character'Val (130);
166   NBH                  : constant Wide_Character := Wide_Character'Val (131);
167   Reserved_132         : constant Wide_Character := Wide_Character'Val (132);
168   NEL                  : constant Wide_Character := Wide_Character'Val (133);
169   SSA                  : constant Wide_Character := Wide_Character'Val (134);
170   ESA                  : constant Wide_Character := Wide_Character'Val (135);
171   HTS                  : constant Wide_Character := Wide_Character'Val (136);
172   HTJ                  : constant Wide_Character := Wide_Character'Val (137);
173   VTS                  : constant Wide_Character := Wide_Character'Val (138);
174   PLD                  : constant Wide_Character := Wide_Character'Val (139);
175   PLU                  : constant Wide_Character := Wide_Character'Val (140);
176   RI                   : constant Wide_Character := Wide_Character'Val (141);
177   SS2                  : constant Wide_Character := Wide_Character'Val (142);
178   SS3                  : constant Wide_Character := Wide_Character'Val (143);
179
180   DCS                  : constant Wide_Character := Wide_Character'Val (144);
181   PU1                  : constant Wide_Character := Wide_Character'Val (145);
182   PU2                  : constant Wide_Character := Wide_Character'Val (146);
183   STS                  : constant Wide_Character := Wide_Character'Val (147);
184   CCH                  : constant Wide_Character := Wide_Character'Val (148);
185   MW                   : constant Wide_Character := Wide_Character'Val (149);
186   SPA                  : constant Wide_Character := Wide_Character'Val (150);
187   EPA                  : constant Wide_Character := Wide_Character'Val (151);
188
189   SOS                  : constant Wide_Character := Wide_Character'Val (152);
190   Reserved_153         : constant Wide_Character := Wide_Character'Val (153);
191   SCI                  : constant Wide_Character := Wide_Character'Val (154);
192   CSI                  : constant Wide_Character := Wide_Character'Val (155);
193   ST                   : constant Wide_Character := Wide_Character'Val (156);
194   OSC                  : constant Wide_Character := Wide_Character'Val (157);
195   PM                   : constant Wide_Character := Wide_Character'Val (158);
196   APC                  : constant Wide_Character := Wide_Character'Val (159);
197
198   -----------------------------------
199   -- Other Graphic Wide_Characters --
200   -----------------------------------
201
202   --  Wide_Character positions 160 (16#A0#) .. 175 (16#AF#)
203
204   No_Break_Space       : constant Wide_Character := Wide_Character'Val (160);
205   NBSP                 : Wide_Character renames No_Break_Space;
206   Inverted_Exclamation : constant Wide_Character := Wide_Character'Val (161);
207   Cent_Sign            : constant Wide_Character := Wide_Character'Val (162);
208   Pound_Sign           : constant Wide_Character := Wide_Character'Val (163);
209   Euro_Sign            : constant Wide_Character := Wide_Character'Val (164);
210   Yen_Sign             : constant Wide_Character := Wide_Character'Val (165);
211   UC_S_Caron           : constant Wide_Character := Wide_Character'Val (166);
212   Section_Sign         : constant Wide_Character := Wide_Character'Val (167);
213   LC_S_Caron           : constant Wide_Character := Wide_Character'Val (168);
214   Copyright_Sign       : constant Wide_Character := Wide_Character'Val (169);
215   Feminine_Ordinal_Indicator
216                        : constant Wide_Character := Wide_Character'Val (170);
217   Left_Angle_Quotation : constant Wide_Character := Wide_Character'Val (171);
218   Not_Sign             : constant Wide_Character := Wide_Character'Val (172);
219   Soft_Hyphen          : constant Wide_Character := Wide_Character'Val (173);
220   Registered_Trade_Mark_Sign
221                        : constant Wide_Character := Wide_Character'Val (174);
222   Macron               : constant Wide_Character := Wide_Character'Val (175);
223
224   --  Wide_Character positions 176 (16#B0#) .. 191 (16#BF#)
225
226   Degree_Sign          : constant Wide_Character := Wide_Character'Val (176);
227   Ring_Above           : Wide_Character renames Degree_Sign;
228   Plus_Minus_Sign      : constant Wide_Character := Wide_Character'Val (177);
229   Superscript_Two      : constant Wide_Character := Wide_Character'Val (178);
230   Superscript_Three    : constant Wide_Character := Wide_Character'Val (179);
231   UC_Z_Caron           : constant Wide_Character := Wide_Character'Val (180);
232   Micro_Sign           : constant Wide_Character := Wide_Character'Val (181);
233   Pilcrow_Sign         : constant Wide_Character := Wide_Character'Val (182);
234   Paragraph_Sign       : Wide_Character renames Pilcrow_Sign;
235   Middle_Dot           : constant Wide_Character := Wide_Character'Val (183);
236   LC_Z_Caron           : constant Wide_Character := Wide_Character'Val (184);
237   Superscript_One      : constant Wide_Character := Wide_Character'Val (185);
238   Masculine_Ordinal_Indicator
239                        : constant Wide_Character := Wide_Character'Val (186);
240   Right_Angle_Quotation
241                        : constant Wide_Character := Wide_Character'Val (187);
242   UC_Ligature_OE       : constant Wide_Character := Wide_Character'Val (188);
243   LC_Ligature_OE       : constant Wide_Character := Wide_Character'Val (189);
244   UC_Y_Diaeresis       : constant Wide_Character := Wide_Character'Val (190);
245   Inverted_Question    : constant Wide_Character := Wide_Character'Val (191);
246
247   --  Wide_Character positions 192 (16#C0#) .. 207 (16#CF#)
248
249   UC_A_Grave           : constant Wide_Character := Wide_Character'Val (192);
250   UC_A_Acute           : constant Wide_Character := Wide_Character'Val (193);
251   UC_A_Circumflex      : constant Wide_Character := Wide_Character'Val (194);
252   UC_A_Tilde           : constant Wide_Character := Wide_Character'Val (195);
253   UC_A_Diaeresis       : constant Wide_Character := Wide_Character'Val (196);
254   UC_A_Ring            : constant Wide_Character := Wide_Character'Val (197);
255   UC_AE_Diphthong      : constant Wide_Character := Wide_Character'Val (198);
256   UC_C_Cedilla         : constant Wide_Character := Wide_Character'Val (199);
257   UC_E_Grave           : constant Wide_Character := Wide_Character'Val (200);
258   UC_E_Acute           : constant Wide_Character := Wide_Character'Val (201);
259   UC_E_Circumflex      : constant Wide_Character := Wide_Character'Val (202);
260   UC_E_Diaeresis       : constant Wide_Character := Wide_Character'Val (203);
261   UC_I_Grave           : constant Wide_Character := Wide_Character'Val (204);
262   UC_I_Acute           : constant Wide_Character := Wide_Character'Val (205);
263   UC_I_Circumflex      : constant Wide_Character := Wide_Character'Val (206);
264   UC_I_Diaeresis       : constant Wide_Character := Wide_Character'Val (207);
265
266   --  Wide_Character positions 208 (16#D0#) .. 223 (16#DF#)
267
268   UC_Icelandic_Eth     : constant Wide_Character := Wide_Character'Val (208);
269   UC_N_Tilde           : constant Wide_Character := Wide_Character'Val (209);
270   UC_O_Grave           : constant Wide_Character := Wide_Character'Val (210);
271   UC_O_Acute           : constant Wide_Character := Wide_Character'Val (211);
272   UC_O_Circumflex      : constant Wide_Character := Wide_Character'Val (212);
273   UC_O_Tilde           : constant Wide_Character := Wide_Character'Val (213);
274   UC_O_Diaeresis       : constant Wide_Character := Wide_Character'Val (214);
275   Multiplication_Sign  : constant Wide_Character := Wide_Character'Val (215);
276   UC_O_Oblique_Stroke  : constant Wide_Character := Wide_Character'Val (216);
277   UC_U_Grave           : constant Wide_Character := Wide_Character'Val (217);
278   UC_U_Acute           : constant Wide_Character := Wide_Character'Val (218);
279   UC_U_Circumflex      : constant Wide_Character := Wide_Character'Val (219);
280   UC_U_Diaeresis       : constant Wide_Character := Wide_Character'Val (220);
281   UC_Y_Acute           : constant Wide_Character := Wide_Character'Val (221);
282   UC_Icelandic_Thorn   : constant Wide_Character := Wide_Character'Val (222);
283   LC_German_Sharp_S    : constant Wide_Character := Wide_Character'Val (223);
284
285   --  Wide_Character positions 224 (16#E0#) .. 239 (16#EF#)
286
287   LC_A_Grave           : constant Wide_Character := Wide_Character'Val (224);
288   LC_A_Acute           : constant Wide_Character := Wide_Character'Val (225);
289   LC_A_Circumflex      : constant Wide_Character := Wide_Character'Val (226);
290   LC_A_Tilde           : constant Wide_Character := Wide_Character'Val (227);
291   LC_A_Diaeresis       : constant Wide_Character := Wide_Character'Val (228);
292   LC_A_Ring            : constant Wide_Character := Wide_Character'Val (229);
293   LC_AE_Diphthong      : constant Wide_Character := Wide_Character'Val (230);
294   LC_C_Cedilla         : constant Wide_Character := Wide_Character'Val (231);
295   LC_E_Grave           : constant Wide_Character := Wide_Character'Val (232);
296   LC_E_Acute           : constant Wide_Character := Wide_Character'Val (233);
297   LC_E_Circumflex      : constant Wide_Character := Wide_Character'Val (234);
298   LC_E_Diaeresis       : constant Wide_Character := Wide_Character'Val (235);
299   LC_I_Grave           : constant Wide_Character := Wide_Character'Val (236);
300   LC_I_Acute           : constant Wide_Character := Wide_Character'Val (237);
301   LC_I_Circumflex      : constant Wide_Character := Wide_Character'Val (238);
302   LC_I_Diaeresis       : constant Wide_Character := Wide_Character'Val (239);
303
304   --  Wide_Character positions 240 (16#F0#) .. 255 (16#FF)
305
306   LC_Icelandic_Eth     : constant Wide_Character := Wide_Character'Val (240);
307   LC_N_Tilde           : constant Wide_Character := Wide_Character'Val (241);
308   LC_O_Grave           : constant Wide_Character := Wide_Character'Val (242);
309   LC_O_Acute           : constant Wide_Character := Wide_Character'Val (243);
310   LC_O_Circumflex      : constant Wide_Character := Wide_Character'Val (244);
311   LC_O_Tilde           : constant Wide_Character := Wide_Character'Val (245);
312   LC_O_Diaeresis       : constant Wide_Character := Wide_Character'Val (246);
313   Division_Sign        : constant Wide_Character := Wide_Character'Val (247);
314   LC_O_Oblique_Stroke  : constant Wide_Character := Wide_Character'Val (248);
315   LC_U_Grave           : constant Wide_Character := Wide_Character'Val (249);
316   LC_U_Acute           : constant Wide_Character := Wide_Character'Val (250);
317   LC_U_Circumflex      : constant Wide_Character := Wide_Character'Val (251);
318   LC_U_Diaeresis       : constant Wide_Character := Wide_Character'Val (252);
319   LC_Y_Acute           : constant Wide_Character := Wide_Character'Val (253);
320   LC_Icelandic_Thorn   : constant Wide_Character := Wide_Character'Val (254);
321   LC_Y_Diaeresis       : constant Wide_Character := Wide_Character'Val (255);
322
323   ------------------------------------------------
324   -- Summary of Changes from Latin-1 => Latin-9 --
325   ------------------------------------------------
326
327   --   164     Currency                => Euro_Sign
328   --   166     Broken_Bar              => UC_S_Caron
329   --   168     Diaeresis               => LC_S_Caron
330   --   180     Acute                   => UC_Z_Caron
331   --   184     Cedilla                 => LC_Z_Caron
332   --   188     Fraction_One_Quarter    => UC_Ligature_OE
333   --   189     Fraction_One_Half       => LC_Ligature_OE
334   --   190     Fraction_Three_Quarters => UC_Y_Diaeresis
335
336end Ada.Characters.Wide_Latin_9;
337