Link with C++ linker
[oweals/cde.git] / cde / programs / nsgmls / ISO8859InputCodingSystem.C
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: ISO8859InputCodingSystem.C /main/1 1996/07/29 16:53:56 cde-hp $ */
24 // Copyright (c) 1995 James Clark
25 // See the file COPYING for copying permission.
26
27 #include "splib.h"
28 #ifdef SP_MULTI_BYTE
29
30 #include "ISO8859InputCodingSystem.h"
31 #include "macros.h"
32
33 #ifdef SP_NAMESPACE
34 namespace SP_NAMESPACE {
35 #endif
36
37 inline const Char *ISO8859InputCodingSystem::partMap(int part)
38 {
39   ASSERT(2 <= part && part <= 9);
40   return maps[part - 2];
41 }
42   
43 ISO8859InputCodingSystem::ISO8859InputCodingSystem(int part)
44 : TranslateInputCodingSystem(partMap(part))
45 {
46 }
47
48 #define INVALID 0xFFFD
49
50 // Tables mapping ISO 8859-2 through ISO 8859-9 to ISO 10646.
51 // Generated from Unicode Consortium data.
52
53 const Char ISO8859InputCodingSystem::maps[8][256] = {
54  {
55    0, 1, 2, 3, 4, 5, 6, 7,
56    8, 9, 10, 11, 12, 13, 14, 15,
57    16, 17, 18, 19, 20, 21, 22, 23,
58    24, 25, 26, 27, 28, 29, 30, 31,
59    32, 33, 34, 35, 36, 37, 38, 39,
60    40, 41, 42, 43, 44, 45, 46, 47,
61    48, 49, 50, 51, 52, 53, 54, 55,
62    56, 57, 58, 59, 60, 61, 62, 63,
63    64, 65, 66, 67, 68, 69, 70, 71,
64    72, 73, 74, 75, 76, 77, 78, 79,
65    80, 81, 82, 83, 84, 85, 86, 87,
66    88, 89, 90, 91, 92, 93, 94, 95,
67    96, 97, 98, 99, 100, 101, 102, 103,
68    104, 105, 106, 107, 108, 109, 110, 111,
69    112, 113, 114, 115, 116, 117, 118, 119,
70    120, 121, 122, 123, 124, 125, 126, 127,
71    128, 129, 130, 131, 132, 133, 134, 135,
72    136, 137, 138, 139, 140, 141, 142, 143,
73    144, 145, 146, 147, 148, 149, 150, 151,
74    152, 153, 154, 155, 156, 157, 158, 159,
75    160, 260, 728, 321, 164, 317, 346, 167,
76    168, 352, 350, 356, 377, 173, 381, 379,
77    176, 261, 731, 322, 180, 318, 347, 711,
78    184, 353, 351, 357, 378, 733, 382, 380,
79    340, 193, 194, 258, 196, 313, 262, 199,
80    268, 201, 280, 203, 282, 205, 206, 270,
81    272, 323, 327, 211, 212, 336, 214, 215,
82    344, 366, 218, 368, 220, 221, 354, 223,
83    341, 225, 226, 259, 228, 314, 263, 231,
84    269, 233, 281, 235, 283, 237, 238, 271,
85    273, 324, 328, 243, 244, 337, 246, 247,
86    345, 367, 250, 369, 252, 253, 355, 729,
87  },
88  {
89    0, 1, 2, 3, 4, 5, 6, 7,
90    8, 9, 10, 11, 12, 13, 14, 15,
91    16, 17, 18, 19, 20, 21, 22, 23,
92    24, 25, 26, 27, 28, 29, 30, 31,
93    32, 33, 34, 35, 36, 37, 38, 39,
94    40, 41, 42, 43, 44, 45, 46, 47,
95    48, 49, 50, 51, 52, 53, 54, 55,
96    56, 57, 58, 59, 60, 61, 62, 63,
97    64, 65, 66, 67, 68, 69, 70, 71,
98    72, 73, 74, 75, 76, 77, 78, 79,
99    80, 81, 82, 83, 84, 85, 86, 87,
100    88, 89, 90, 91, 92, 93, 94, 95,
101    96, 97, 98, 99, 100, 101, 102, 103,
102    104, 105, 106, 107, 108, 109, 110, 111,
103    112, 113, 114, 115, 116, 117, 118, 119,
104    120, 121, 122, 123, 124, 125, 126, 127,
105    128, 129, 130, 131, 132, 133, 134, 135,
106    136, 137, 138, 139, 140, 141, 142, 143,
107    144, 145, 146, 147, 148, 149, 150, 151,
108    152, 153, 154, 155, 156, 157, 158, 159,
109    160, 294, 728, 163, 164, INVALID, 292, 167,
110    168, 304, 350, 286, 308, 173, INVALID, 379,
111    176, 295, 178, 179, 180, 181, 293, 183,
112    184, 305, 351, 287, 309, 189, INVALID, 380,
113    192, 193, 194, INVALID, 196, 266, 264, 199,
114    200, 201, 202, 203, 204, 205, 206, 207,
115    INVALID, 209, 210, 211, 212, 288, 214, 215,
116    284, 217, 218, 219, 220, 364, 348, 223,
117    224, 225, 226, INVALID, 228, 267, 265, 231,
118    232, 233, 234, 235, 236, 237, 238, 239,
119    INVALID, 241, 242, 243, 244, 289, 246, 247,
120    285, 249, 250, 251, 252, 365, 349, 729,
121  },
122  {
123    0, 1, 2, 3, 4, 5, 6, 7,
124    8, 9, 10, 11, 12, 13, 14, 15,
125    16, 17, 18, 19, 20, 21, 22, 23,
126    24, 25, 26, 27, 28, 29, 30, 31,
127    32, 33, 34, 35, 36, 37, 38, 39,
128    40, 41, 42, 43, 44, 45, 46, 47,
129    48, 49, 50, 51, 52, 53, 54, 55,
130    56, 57, 58, 59, 60, 61, 62, 63,
131    64, 65, 66, 67, 68, 69, 70, 71,
132    72, 73, 74, 75, 76, 77, 78, 79,
133    80, 81, 82, 83, 84, 85, 86, 87,
134    88, 89, 90, 91, 92, 93, 94, 95,
135    96, 97, 98, 99, 100, 101, 102, 103,
136    104, 105, 106, 107, 108, 109, 110, 111,
137    112, 113, 114, 115, 116, 117, 118, 119,
138    120, 121, 122, 123, 124, 125, 126, 127,
139    128, 129, 130, 131, 132, 133, 134, 135,
140    136, 137, 138, 139, 140, 141, 142, 143,
141    144, 145, 146, 147, 148, 149, 150, 151,
142    152, 153, 154, 155, 156, 157, 158, 159,
143    160, 260, 312, 342, 164, 296, 315, 167,
144    168, 352, 274, 290, 358, 173, 381, 175,
145    176, 261, 731, 343, 180, 297, 316, 711,
146    184, 353, 275, 291, 359, 330, 382, 331,
147    256, 193, 194, 195, 196, 197, 198, 302,
148    268, 201, 280, 203, 278, 205, 206, 298,
149    272, 325, 332, 310, 212, 213, 214, 215,
150    216, 370, 218, 219, 220, 360, 362, 223,
151    257, 225, 226, 227, 228, 229, 230, 303,
152    269, 233, 281, 235, 279, 237, 238, 299,
153    273, 326, 333, 311, 244, 245, 246, 247,
154    248, 371, 250, 251, 252, 361, 363, 729,
155  },
156  {
157    0, 1, 2, 3, 4, 5, 6, 7,
158    8, 9, 10, 11, 12, 13, 14, 15,
159    16, 17, 18, 19, 20, 21, 22, 23,
160    24, 25, 26, 27, 28, 29, 30, 31,
161    32, 33, 34, 35, 36, 37, 38, 39,
162    40, 41, 42, 43, 44, 45, 46, 47,
163    48, 49, 50, 51, 52, 53, 54, 55,
164    56, 57, 58, 59, 60, 61, 62, 63,
165    64, 65, 66, 67, 68, 69, 70, 71,
166    72, 73, 74, 75, 76, 77, 78, 79,
167    80, 81, 82, 83, 84, 85, 86, 87,
168    88, 89, 90, 91, 92, 93, 94, 95,
169    96, 97, 98, 99, 100, 101, 102, 103,
170    104, 105, 106, 107, 108, 109, 110, 111,
171    112, 113, 114, 115, 116, 117, 118, 119,
172    120, 121, 122, 123, 124, 125, 126, 127,
173    128, 129, 130, 131, 132, 133, 134, 135,
174    136, 137, 138, 139, 140, 141, 142, 143,
175    144, 145, 146, 147, 148, 149, 150, 151,
176    152, 153, 154, 155, 156, 157, 158, 159,
177    160, 1025, 1026, 1027, 1028, 1029, 1030, 1031,
178    1032, 1033, 1034, 1035, 1036, 173, 1038, 1039,
179    1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047,
180    1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
181    1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
182    1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
183    1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
184    1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
185    1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
186    1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
187    8470, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
188    1112, 1113, 1114, 1115, 1116, 167, 1118, 1119,
189  },
190  {
191    0, 1, 2, 3, 4, 5, 6, 7,
192    8, 9, 10, 11, 12, 13, 14, 15,
193    16, 17, 18, 19, 20, 21, 22, 23,
194    24, 25, 26, 27, 28, 29, 30, 31,
195    32, 33, 34, 35, 36, 37, 38, 39,
196    40, 41, 42, 43, 44, 45, 46, 47,
197    1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639,
198    1640, 1641, 58, 59, 60, 61, 62, 63,
199    64, 65, 66, 67, 68, 69, 70, 71,
200    72, 73, 74, 75, 76, 77, 78, 79,
201    80, 81, 82, 83, 84, 85, 86, 87,
202    88, 89, 90, 91, 92, 93, 94, 95,
203    96, 97, 98, 99, 100, 101, 102, 103,
204    104, 105, 106, 107, 108, 109, 110, 111,
205    112, 113, 114, 115, 116, 117, 118, 119,
206    120, 121, 122, 123, 124, 125, 126, 127,
207    128, 129, 130, 131, 132, 133, 134, 135,
208    136, 137, 138, 139, 140, 141, 142, 143,
209    144, 145, 146, 147, 148, 149, 150, 151,
210    152, 153, 154, 155, 156, 157, 158, 159,
211    160, INVALID, INVALID, INVALID, 164, INVALID, INVALID, INVALID,
212    INVALID, INVALID, INVALID, INVALID, 1548, 173, INVALID, INVALID,
213    INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
214    INVALID, INVALID, INVALID, 1563, INVALID, INVALID, INVALID, 1567,
215    INVALID, 1569, 1570, 1571, 1572, 1573, 1574, 1575,
216    1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583,
217    1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591,
218    1592, 1593, 1594, INVALID, INVALID, INVALID, INVALID, INVALID,
219    1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607,
220    1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615,
221    1616, 1617, 1618, INVALID, INVALID, INVALID, INVALID, INVALID,
222    INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
223  },
224  {
225    0, 1, 2, 3, 4, 5, 6, 7,
226    8, 9, 10, 11, 12, 13, 14, 15,
227    16, 17, 18, 19, 20, 21, 22, 23,
228    24, 25, 26, 27, 28, 29, 30, 31,
229    32, 33, 34, 35, 36, 37, 38, 39,
230    40, 41, 42, 43, 44, 45, 46, 47,
231    48, 49, 50, 51, 52, 53, 54, 55,
232    56, 57, 58, 59, 60, 61, 62, 63,
233    64, 65, 66, 67, 68, 69, 70, 71,
234    72, 73, 74, 75, 76, 77, 78, 79,
235    80, 81, 82, 83, 84, 85, 86, 87,
236    88, 89, 90, 91, 92, 93, 94, 95,
237    96, 97, 98, 99, 100, 101, 102, 103,
238    104, 105, 106, 107, 108, 109, 110, 111,
239    112, 113, 114, 115, 116, 117, 118, 119,
240    120, 121, 122, 123, 124, 125, 126, 127,
241    128, 129, 130, 131, 132, 133, 134, 135,
242    136, 137, 138, 139, 140, 141, 142, 143,
243    144, 145, 146, 147, 148, 149, 150, 151,
244    152, 153, 154, 155, 156, 157, 158, 159,
245    160, 701, 700, 163, INVALID, INVALID, 166, 167,
246    168, 169, INVALID, 171, 172, 173, INVALID, 8213,
247    176, 177, 178, 179, 900, 901, 902, 183,
248    904, 905, 906, 187, 908, 189, 910, 911,
249    912, 913, 914, 915, 916, 917, 918, 919,
250    920, 921, 922, 923, 924, 925, 926, 927,
251    928, 929, INVALID, 931, 932, 933, 934, 935,
252    936, 937, 938, 939, 940, 941, 942, 943,
253    944, 945, 946, 947, 948, 949, 950, 951,
254    952, 953, 954, 955, 956, 957, 958, 959,
255    960, 961, 962, 963, 964, 965, 966, 967,
256    968, 969, 970, 971, 972, 973, 974, INVALID,
257  },
258  {
259    0, 1, 2, 3, 4, 5, 6, 7,
260    8, 9, 10, 11, 12, 13, 14, 15,
261    16, 17, 18, 19, 20, 21, 22, 23,
262    24, 25, 26, 27, 28, 29, 30, 31,
263    32, 33, 34, 35, 36, 37, 38, 39,
264    40, 41, 42, 43, 44, 45, 46, 47,
265    48, 49, 50, 51, 52, 53, 54, 55,
266    56, 57, 58, 59, 60, 61, 62, 63,
267    64, 65, 66, 67, 68, 69, 70, 71,
268    72, 73, 74, 75, 76, 77, 78, 79,
269    80, 81, 82, 83, 84, 85, 86, 87,
270    88, 89, 90, 91, 92, 93, 94, 95,
271    96, 97, 98, 99, 100, 101, 102, 103,
272    104, 105, 106, 107, 108, 109, 110, 111,
273    112, 113, 114, 115, 116, 117, 118, 119,
274    120, 121, 122, 123, 124, 125, 126, 127,
275    128, 129, 130, 131, 132, 133, 134, 135,
276    136, 137, 138, 139, 140, 141, 142, 143,
277    144, 145, 146, 147, 148, 149, 150, 151,
278    152, 153, 154, 155, 156, 157, 158, 159,
279    160, INVALID, 162, 163, 164, 165, 166, 167,
280    168, 169, 215, 171, 172, 173, 174, 8254,
281    176, 177, 178, 179, 180, 181, 182, 183,
282    184, 185, 247, 187, 188, 189, 190, INVALID,
283    INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
284    INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
285    INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
286    INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, 8215,
287    1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495,
288    1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503,
289    1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511,
290    1512, 1513, 1514, INVALID, INVALID, INVALID, INVALID, INVALID,
291  },
292  {
293    0, 1, 2, 3, 4, 5, 6, 7,
294    8, 9, 10, 11, 12, 13, 14, 15,
295    16, 17, 18, 19, 20, 21, 22, 23,
296    24, 25, 26, 27, 28, 29, 30, 31,
297    32, 33, 34, 35, 36, 37, 38, 39,
298    40, 41, 42, 43, 44, 45, 46, 47,
299    48, 49, 50, 51, 52, 53, 54, 55,
300    56, 57, 58, 59, 60, 61, 62, 63,
301    64, 65, 66, 67, 68, 69, 70, 71,
302    72, 73, 74, 75, 76, 77, 78, 79,
303    80, 81, 82, 83, 84, 85, 86, 87,
304    88, 89, 90, 91, 92, 93, 94, 95,
305    96, 97, 98, 99, 100, 101, 102, 103,
306    104, 105, 106, 107, 108, 109, 110, 111,
307    112, 113, 114, 115, 116, 117, 118, 119,
308    120, 121, 122, 123, 124, 125, 126, 127,
309    128, 129, 130, 131, 132, 133, 134, 135,
310    136, 137, 138, 139, 140, 141, 142, 143,
311    144, 145, 146, 147, 148, 149, 150, 151,
312    152, 153, 154, 155, 156, 157, 158, 159,
313    160, 161, 162, 163, 164, 165, 166, 167,
314    168, 169, 170, 171, 172, 173, 174, 175,
315    176, 177, 178, 179, 180, 181, 182, 183,
316    184, 185, 186, 187, 188, 189, 190, 191,
317    192, 193, 194, 195, 196, 197, 198, 199,
318    200, 201, 202, 203, 204, 205, 206, 207,
319    286, 209, 210, 211, 212, 213, 214, 215,
320    216, 217, 218, 219, 220, 304, 350, 223,
321    224, 225, 226, 227, 228, 229, 230, 231,
322    232, 233, 234, 235, 236, 237, 238, 239,
323    287, 241, 242, 243, 244, 245, 246, 247,
324    248, 249, 250, 251, 252, 305, 351, 255,
325  }
326 };
327
328 #ifdef SP_NAMESPACE
329 }
330 #endif
331
332 #else /* not SP_MULTI_BYTE */
333
334 #ifndef __GNUG__
335 static char non_empty_translation_unit; // sigh
336 #endif
337
338 #endif /* not SP_MULTI_BYTE */