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