2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
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)
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
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
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.
30 #include "ISO8859InputCodingSystem.h"
34 namespace SP_NAMESPACE {
37 inline const Char *ISO8859InputCodingSystem::partMap(int part)
39 ASSERT(2 <= part && part <= 9);
40 return maps[part - 2];
43 ISO8859InputCodingSystem::ISO8859InputCodingSystem(int part)
44 : TranslateInputCodingSystem(partMap(part))
48 #define INVALID 0xFFFD
50 // Tables mapping ISO 8859-2 through ISO 8859-9 to ISO 10646.
51 // Generated from Unicode Consortium data.
53 const Char ISO8859InputCodingSystem::maps[8][256] = {
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,
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,
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,
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,
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,
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,
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,
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,
332 #else /* not SP_MULTI_BYTE */
335 static char non_empty_translation_unit; // sigh
338 #endif /* not SP_MULTI_BYTE */