]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/spirit/home/support/char_encoding/iso8859_1.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / spirit / home / support / char_encoding / iso8859_1.hpp
CommitLineData
7c673cae
FG
1/*=============================================================================
2 Copyright (c) 2001-2011 Hartmut Kaiser
3 Copyright (c) 2001-2011 Joel de Guzman
4
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7=============================================================================*/
8#if !defined(BOOST_SPIRIT_ISO8859_1_APRIL_26_2006_1106PM)
9#define BOOST_SPIRIT_ISO8859_1_APRIL_26_2006_1106PM
10
11#if defined(_MSC_VER)
12#pragma once
13#endif
14
15#include <climits>
16#include <boost/assert.hpp>
17#include <boost/cstdint.hpp>
18
19///////////////////////////////////////////////////////////////////////////////
20// constants used to classify the single characters
21///////////////////////////////////////////////////////////////////////////////
22#define BOOST_CC_DIGIT 0x0001
23#define BOOST_CC_XDIGIT 0x0002
24#define BOOST_CC_ALPHA 0x0004
25#define BOOST_CC_CTRL 0x0008
26#define BOOST_CC_LOWER 0x0010
27#define BOOST_CC_UPPER 0x0020
28#define BOOST_CC_SPACE 0x0040
29#define BOOST_CC_PUNCT 0x0080
30
31namespace boost { namespace spirit { namespace char_encoding
32{
33 // The detection of isgraph(), isprint() and isblank() is done programmatically
34 // to keep the character type table small. Additionally, these functions are
35 // rather seldom used and the programmatic detection is very simple.
36
37 ///////////////////////////////////////////////////////////////////////////
38 // ISO 8859-1 character classification table
39 //
40 // the comments intentionally contain non-ascii characters
41 // boostinspect:noascii
42 ///////////////////////////////////////////////////////////////////////////
43 const unsigned char iso8859_1_char_types[] =
44 {
45 /* NUL 0 0 */ BOOST_CC_CTRL,
46 /* SOH 1 1 */ BOOST_CC_CTRL,
47 /* STX 2 2 */ BOOST_CC_CTRL,
48 /* ETX 3 3 */ BOOST_CC_CTRL,
49 /* EOT 4 4 */ BOOST_CC_CTRL,
50 /* ENQ 5 5 */ BOOST_CC_CTRL,
51 /* ACK 6 6 */ BOOST_CC_CTRL,
52 /* BEL 7 7 */ BOOST_CC_CTRL,
53 /* BS 8 8 */ BOOST_CC_CTRL,
54 /* HT 9 9 */ BOOST_CC_CTRL|BOOST_CC_SPACE,
55 /* NL 10 a */ BOOST_CC_CTRL|BOOST_CC_SPACE,
56 /* VT 11 b */ BOOST_CC_CTRL|BOOST_CC_SPACE,
57 /* NP 12 c */ BOOST_CC_CTRL|BOOST_CC_SPACE,
58 /* CR 13 d */ BOOST_CC_CTRL|BOOST_CC_SPACE,
59 /* SO 14 e */ BOOST_CC_CTRL,
60 /* SI 15 f */ BOOST_CC_CTRL,
61 /* DLE 16 10 */ BOOST_CC_CTRL,
62 /* DC1 17 11 */ BOOST_CC_CTRL,
63 /* DC2 18 12 */ BOOST_CC_CTRL,
64 /* DC3 19 13 */ BOOST_CC_CTRL,
65 /* DC4 20 14 */ BOOST_CC_CTRL,
66 /* NAK 21 15 */ BOOST_CC_CTRL,
67 /* SYN 22 16 */ BOOST_CC_CTRL,
68 /* ETB 23 17 */ BOOST_CC_CTRL,
69 /* CAN 24 18 */ BOOST_CC_CTRL,
70 /* EM 25 19 */ BOOST_CC_CTRL,
71 /* SUB 26 1a */ BOOST_CC_CTRL,
72 /* ESC 27 1b */ BOOST_CC_CTRL,
73 /* FS 28 1c */ BOOST_CC_CTRL,
74 /* GS 29 1d */ BOOST_CC_CTRL,
75 /* RS 30 1e */ BOOST_CC_CTRL,
76 /* US 31 1f */ BOOST_CC_CTRL,
77 /* SP 32 20 */ BOOST_CC_SPACE,
78 /* ! 33 21 */ BOOST_CC_PUNCT,
79 /* " 34 22 */ BOOST_CC_PUNCT,
80 /* # 35 23 */ BOOST_CC_PUNCT,
81 /* $ 36 24 */ BOOST_CC_PUNCT,
82 /* % 37 25 */ BOOST_CC_PUNCT,
83 /* & 38 26 */ BOOST_CC_PUNCT,
84 /* ' 39 27 */ BOOST_CC_PUNCT,
85 /* ( 40 28 */ BOOST_CC_PUNCT,
86 /* ) 41 29 */ BOOST_CC_PUNCT,
87 /* * 42 2a */ BOOST_CC_PUNCT,
88 /* + 43 2b */ BOOST_CC_PUNCT,
89 /* , 44 2c */ BOOST_CC_PUNCT,
90 /* - 45 2d */ BOOST_CC_PUNCT,
91 /* . 46 2e */ BOOST_CC_PUNCT,
92 /* / 47 2f */ BOOST_CC_PUNCT,
93 /* 0 48 30 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
94 /* 1 49 31 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
95 /* 2 50 32 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
96 /* 3 51 33 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
97 /* 4 52 34 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
98 /* 5 53 35 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
99 /* 6 54 36 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
100 /* 7 55 37 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
101 /* 8 56 38 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
102 /* 9 57 39 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
103 /* : 58 3a */ BOOST_CC_PUNCT,
104 /* ; 59 3b */ BOOST_CC_PUNCT,
105 /* < 60 3c */ BOOST_CC_PUNCT,
106 /* = 61 3d */ BOOST_CC_PUNCT,
107 /* > 62 3e */ BOOST_CC_PUNCT,
108 /* ? 63 3f */ BOOST_CC_PUNCT,
109 /* @ 64 40 */ BOOST_CC_PUNCT,
110 /* A 65 41 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
111 /* B 66 42 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
112 /* C 67 43 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
113 /* D 68 44 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
114 /* E 69 45 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
115 /* F 70 46 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
116 /* G 71 47 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
117 /* H 72 48 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
118 /* I 73 49 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
119 /* J 74 4a */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
120 /* K 75 4b */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
121 /* L 76 4c */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
122 /* M 77 4d */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
123 /* N 78 4e */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
124 /* O 79 4f */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
125 /* P 80 50 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
126 /* Q 81 51 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
127 /* R 82 52 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
128 /* S 83 53 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
129 /* T 84 54 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
130 /* U 85 55 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
131 /* V 86 56 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
132 /* W 87 57 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
133 /* X 88 58 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
134 /* Y 89 59 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
135 /* Z 90 5a */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
136 /* [ 91 5b */ BOOST_CC_PUNCT,
137 /* \ 92 5c */ BOOST_CC_PUNCT,
138 /* ] 93 5d */ BOOST_CC_PUNCT,
139 /* ^ 94 5e */ BOOST_CC_PUNCT,
140 /* _ 95 5f */ BOOST_CC_PUNCT,
141 /* ` 96 60 */ BOOST_CC_PUNCT,
142 /* a 97 61 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
143 /* b 98 62 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
144 /* c 99 63 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
145 /* d 100 64 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
146 /* e 101 65 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
147 /* f 102 66 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
148 /* g 103 67 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
149 /* h 104 68 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
150 /* i 105 69 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
151 /* j 106 6a */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
152 /* k 107 6b */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
153 /* l 108 6c */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
154 /* m 109 6d */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
155 /* n 110 6e */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
156 /* o 111 6f */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
157 /* p 112 70 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
158 /* q 113 71 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
159 /* r 114 72 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
160 /* s 115 73 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
161 /* t 116 74 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
162 /* u 117 75 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
163 /* v 118 76 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
164 /* w 119 77 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
165 /* x 120 78 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
166 /* y 121 79 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
167 /* z 122 7a */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
168 /* { 123 7b */ BOOST_CC_PUNCT,
169 /* | 124 7c */ BOOST_CC_PUNCT,
170 /* } 125 7d */ BOOST_CC_PUNCT,
171 /* ~ 126 7e */ BOOST_CC_PUNCT,
172 /* DEL 127 7f */ BOOST_CC_CTRL,
173 /* -- 128 80 */ BOOST_CC_CTRL,
174 /* -- 129 81 */ BOOST_CC_CTRL,
175 /* -- 130 82 */ BOOST_CC_CTRL,
176 /* -- 131 83 */ BOOST_CC_CTRL,
177 /* -- 132 84 */ BOOST_CC_CTRL,
178 /* -- 133 85 */ BOOST_CC_CTRL,
179 /* -- 134 86 */ BOOST_CC_CTRL,
180 /* -- 135 87 */ BOOST_CC_CTRL,
181 /* -- 136 88 */ BOOST_CC_CTRL,
182 /* -- 137 89 */ BOOST_CC_CTRL,
183 /* -- 138 8a */ BOOST_CC_CTRL,
184 /* -- 139 8b */ BOOST_CC_CTRL,
185 /* -- 140 8c */ BOOST_CC_CTRL,
186 /* -- 141 8d */ BOOST_CC_CTRL,
187 /* -- 142 8e */ BOOST_CC_CTRL,
188 /* -- 143 8f */ BOOST_CC_CTRL,
189 /* -- 144 90 */ BOOST_CC_CTRL,
190 /* -- 145 91 */ BOOST_CC_CTRL,
191 /* -- 146 92 */ BOOST_CC_CTRL,
192 /* -- 147 93 */ BOOST_CC_CTRL,
193 /* -- 148 94 */ BOOST_CC_CTRL,
194 /* -- 149 95 */ BOOST_CC_CTRL,
195 /* -- 150 96 */ BOOST_CC_CTRL,
196 /* -- 151 97 */ BOOST_CC_CTRL,
197 /* -- 152 98 */ BOOST_CC_CTRL,
198 /* -- 153 99 */ BOOST_CC_CTRL,
199 /* -- 154 9a */ BOOST_CC_CTRL,
200 /* -- 155 9b */ BOOST_CC_CTRL,
201 /* -- 156 9c */ BOOST_CC_CTRL,
202 /* -- 157 9d */ BOOST_CC_CTRL,
203 /* -- 158 9e */ BOOST_CC_CTRL,
204 /* -- 159 9f */ BOOST_CC_CTRL,
205 /* 160 a0 */ BOOST_CC_SPACE,
92f5a8d4
TL
206 /* � 161 a1 */ BOOST_CC_PUNCT,
207 /* � 162 a2 */ BOOST_CC_PUNCT,
208 /* � 163 a3 */ BOOST_CC_PUNCT,
209 /* � 164 a4 */ BOOST_CC_PUNCT,
210 /* � 165 a5 */ BOOST_CC_PUNCT,
211 /* � 166 a6 */ BOOST_CC_PUNCT,
212 /* � 167 a7 */ BOOST_CC_PUNCT,
213 /* � 168 a8 */ BOOST_CC_PUNCT,
214 /* � 169 a9 */ BOOST_CC_PUNCT,
215 /* � 170 aa */ BOOST_CC_PUNCT,
216 /* � 171 ab */ BOOST_CC_PUNCT,
217 /* � 172 ac */ BOOST_CC_PUNCT,
218 /* � 173 ad */ BOOST_CC_PUNCT,
219 /* � 174 ae */ BOOST_CC_PUNCT,
220 /* � 175 af */ BOOST_CC_PUNCT,
221 /* � 176 b0 */ BOOST_CC_PUNCT,
222 /* � 177 b1 */ BOOST_CC_PUNCT,
223 /* � 178 b2 */ BOOST_CC_DIGIT|BOOST_CC_PUNCT,
224 /* � 179 b3 */ BOOST_CC_DIGIT|BOOST_CC_PUNCT,
225 /* � 180 b4 */ BOOST_CC_PUNCT,
226 /* � 181 b5 */ BOOST_CC_PUNCT,
227 /* � 182 b6 */ BOOST_CC_PUNCT,
228 /* � 183 b7 */ BOOST_CC_PUNCT,
229 /* � 184 b8 */ BOOST_CC_PUNCT,
230 /* � 185 b9 */ BOOST_CC_DIGIT|BOOST_CC_PUNCT,
231 /* � 186 ba */ BOOST_CC_PUNCT,
232 /* � 187 bb */ BOOST_CC_PUNCT,
233 /* � 188 bc */ BOOST_CC_PUNCT,
234 /* � 189 bd */ BOOST_CC_PUNCT,
235 /* � 190 be */ BOOST_CC_PUNCT,
236 /* � 191 bf */ BOOST_CC_PUNCT,
237 /* � 192 c0 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
238 /* � 193 c1 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
239 /* � 194 c2 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
240 /* � 195 c3 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
241 /* � 196 c4 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
242 /* � 197 c5 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
243 /* � 198 c6 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
244 /* � 199 c7 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
245 /* � 200 c8 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
246 /* � 201 c9 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
247 /* � 202 ca */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
248 /* � 203 cb */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
249 /* � 204 cc */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
250 /* � 205 cd */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
251 /* � 206 ce */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
252 /* � 207 cf */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
253 /* � 208 d0 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
254 /* � 209 d1 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
255 /* � 210 d2 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
256 /* � 211 d3 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
257 /* � 212 d4 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
258 /* � 213 d5 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
259 /* � 214 d6 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
260 /* � 215 d7 */ BOOST_CC_PUNCT,
261 /* � 216 d8 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
262 /* � 217 d9 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
263 /* � 218 da */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
264 /* � 219 db */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
265 /* � 220 dc */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
266 /* � 221 dd */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
267 /* � 222 de */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
268 /* � 223 df */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
269 /* � 224 e0 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
270 /* � 225 e1 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
271 /* � 226 e2 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
272 /* � 227 e3 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
273 /* � 228 e4 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
274 /* � 229 e5 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
275 /* � 230 e6 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
276 /* � 231 e7 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
277 /* � 232 e8 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
278 /* � 233 e9 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
279 /* � 234 ea */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
280 /* � 235 eb */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
281 /* � 236 ec */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
282 /* � 237 ed */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
283 /* � 238 ee */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
284 /* � 239 ef */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
285 /* � 240 f0 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
286 /* � 241 f1 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
287 /* � 242 f2 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
288 /* � 243 f3 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
289 /* � 244 f4 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
290 /* � 245 f5 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
291 /* � 246 f6 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
292 /* � 247 f7 */ BOOST_CC_PUNCT,
293 /* � 248 f8 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
294 /* � 249 f9 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
295 /* � 250 fa */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
296 /* � 251 fb */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
297 /* � 252 fc */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
298 /* � 253 fd */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
299 /* � 254 fe */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
300 /* � 255 ff */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
7c673cae
FG
301 };
302
303 ///////////////////////////////////////////////////////////////////////////
304 // ISO 8859-1 character conversion table
305 ///////////////////////////////////////////////////////////////////////////
306 const unsigned char iso8859_1_char_conversion[] =
307 {
308 /* NUL 0 0 */ '\0',
309 /* SOH 1 1 */ '\0',
310 /* STX 2 2 */ '\0',
311 /* ETX 3 3 */ '\0',
312 /* EOT 4 4 */ '\0',
313 /* ENQ 5 5 */ '\0',
314 /* ACK 6 6 */ '\0',
315 /* BEL 7 7 */ '\0',
316 /* BS 8 8 */ '\0',
317 /* HT 9 9 */ '\0',
318 /* NL 10 a */ '\0',
319 /* VT 11 b */ '\0',
320 /* NP 12 c */ '\0',
321 /* CR 13 d */ '\0',
322 /* SO 14 e */ '\0',
323 /* SI 15 f */ '\0',
324 /* DLE 16 10 */ '\0',
325 /* DC1 17 11 */ '\0',
326 /* DC2 18 12 */ '\0',
327 /* DC3 19 13 */ '\0',
328 /* DC4 20 14 */ '\0',
329 /* NAK 21 15 */ '\0',
330 /* SYN 22 16 */ '\0',
331 /* ETB 23 17 */ '\0',
332 /* CAN 24 18 */ '\0',
333 /* EM 25 19 */ '\0',
334 /* SUB 26 1a */ '\0',
335 /* ESC 27 1b */ '\0',
336 /* FS 28 1c */ '\0',
337 /* GS 29 1d */ '\0',
338 /* RS 30 1e */ '\0',
339 /* US 31 1f */ '\0',
340 /* SP 32 20 */ '\0',
341 /* ! 33 21 */ '\0',
342 /* " 34 22 */ '\0',
343 /* # 35 23 */ '\0',
344 /* $ 36 24 */ '\0',
345 /* % 37 25 */ '\0',
346 /* & 38 26 */ '\0',
347 /* ' 39 27 */ '\0',
348 /* ( 40 28 */ '\0',
349 /* ) 41 29 */ '\0',
350 /* * 42 2a */ '\0',
351 /* + 43 2b */ '\0',
352 /* , 44 2c */ '\0',
353 /* - 45 2d */ '\0',
354 /* . 46 2e */ '\0',
355 /* / 47 2f */ '\0',
356 /* 0 48 30 */ '\0',
357 /* 1 49 31 */ '\0',
358 /* 2 50 32 */ '\0',
359 /* 3 51 33 */ '\0',
360 /* 4 52 34 */ '\0',
361 /* 5 53 35 */ '\0',
362 /* 6 54 36 */ '\0',
363 /* 7 55 37 */ '\0',
364 /* 8 56 38 */ '\0',
365 /* 9 57 39 */ '\0',
366 /* : 58 3a */ '\0',
367 /* ; 59 3b */ '\0',
368 /* < 60 3c */ '\0',
369 /* = 61 3d */ '\0',
370 /* > 62 3e */ '\0',
371 /* ? 63 3f */ '\0',
372 /* @ 64 40 */ '\0',
373 /* A 65 41 */ 'a',
374 /* B 66 42 */ 'b',
375 /* C 67 43 */ 'c',
376 /* D 68 44 */ 'd',
377 /* E 69 45 */ 'e',
378 /* F 70 46 */ 'f',
379 /* G 71 47 */ 'g',
380 /* H 72 48 */ 'h',
381 /* I 73 49 */ 'i',
382 /* J 74 4a */ 'j',
383 /* K 75 4b */ 'k',
384 /* L 76 4c */ 'l',
385 /* M 77 4d */ 'm',
386 /* N 78 4e */ 'n',
387 /* O 79 4f */ 'o',
388 /* P 80 50 */ 'p',
389 /* Q 81 51 */ 'q',
390 /* R 82 52 */ 'r',
391 /* S 83 53 */ 's',
392 /* T 84 54 */ 't',
393 /* U 85 55 */ 'u',
394 /* V 86 56 */ 'v',
395 /* W 87 57 */ 'w',
396 /* X 88 58 */ 'x',
397 /* Y 89 59 */ 'y',
398 /* Z 90 5a */ 'z',
399 /* [ 91 5b */ '\0',
400 /* \ 92 5c */ '\0',
401 /* ] 93 5d */ '\0',
402 /* ^ 94 5e */ '\0',
403 /* _ 95 5f */ '\0',
404 /* ` 96 60 */ '\0',
405 /* a 97 61 */ 'A',
406 /* b 98 62 */ 'B',
407 /* c 99 63 */ 'C',
408 /* d 100 64 */ 'D',
409 /* e 101 65 */ 'E',
410 /* f 102 66 */ 'F',
411 /* g 103 67 */ 'G',
412 /* h 104 68 */ 'H',
413 /* i 105 69 */ 'I',
414 /* j 106 6a */ 'J',
415 /* k 107 6b */ 'K',
416 /* l 108 6c */ 'L',
417 /* m 109 6d */ 'M',
418 /* n 110 6e */ 'N',
419 /* o 111 6f */ 'O',
420 /* p 112 70 */ 'P',
421 /* q 113 71 */ 'Q',
422 /* r 114 72 */ 'R',
423 /* s 115 73 */ 'S',
424 /* t 116 74 */ 'T',
425 /* u 117 75 */ 'U',
426 /* v 118 76 */ 'V',
427 /* w 119 77 */ 'W',
428 /* x 120 78 */ 'X',
429 /* y 121 79 */ 'Y',
430 /* z 122 7a */ 'Z',
431 /* { 123 7b */ '\0',
432 /* | 124 7c */ '\0',
433 /* } 125 7d */ '\0',
434 /* ~ 126 7e */ '\0',
435 /* DEL 127 7f */ '\0',
436 /* -- 128 80 */ '\0',
437 /* -- 129 81 */ '\0',
438 /* -- 130 82 */ '\0',
439 /* -- 131 83 */ '\0',
440 /* -- 132 84 */ '\0',
441 /* -- 133 85 */ '\0',
442 /* -- 134 86 */ '\0',
443 /* -- 135 87 */ '\0',
444 /* -- 136 88 */ '\0',
445 /* -- 137 89 */ '\0',
446 /* -- 138 8a */ '\0',
447 /* -- 139 8b */ '\0',
448 /* -- 140 8c */ '\0',
449 /* -- 141 8d */ '\0',
450 /* -- 142 8e */ '\0',
451 /* -- 143 8f */ '\0',
452 /* -- 144 90 */ '\0',
453 /* -- 145 91 */ '\0',
454 /* -- 146 92 */ '\0',
455 /* -- 147 93 */ '\0',
456 /* -- 148 94 */ '\0',
457 /* -- 149 95 */ '\0',
458 /* -- 150 96 */ '\0',
459 /* -- 151 97 */ '\0',
460 /* -- 152 98 */ '\0',
461 /* -- 153 99 */ '\0',
462 /* -- 154 9a */ '\0',
463 /* -- 155 9b */ '\0',
464 /* -- 156 9c */ '\0',
465 /* -- 157 9d */ '\0',
466 /* -- 158 9e */ '\0',
467 /* -- 159 9f */ '\0',
468 /* 160 a0 */ '\0',
92f5a8d4
TL
469 /* � 161 a1 */ '\0',
470 /* � 162 a2 */ '\0',
471 /* � 163 a3 */ '\0',
472 /* � 164 a4 */ '\0',
473 /* � 165 a5 */ '\0',
474 /* � 166 a6 */ '\0',
475 /* � 167 a7 */ '\0',
476 /* � 168 a8 */ '\0',
477 /* � 169 a9 */ '\0',
478 /* � 170 aa */ '\0',
479 /* � 171 ab */ '\0',
480 /* � 172 ac */ '\0',
481 /* � 173 ad */ '\0',
482 /* � 174 ae */ '\0',
483 /* � 175 af */ '\0',
484 /* � 176 b0 */ '\0',
485 /* � 177 b1 */ '\0',
486 /* � 178 b2 */ '\0',
487 /* � 179 b3 */ '\0',
488 /* � 180 b4 */ '\0',
489 /* � 181 b5 */ '\0',
490 /* � 182 b6 */ '\0',
491 /* � 183 b7 */ '\0',
492 /* � 184 b8 */ '\0',
493 /* � 185 b9 */ '\0',
494 /* � 186 ba */ '\0',
495 /* � 187 bb */ '\0',
496 /* � 188 bc */ '\0',
497 /* � 189 bd */ '\0',
498 /* � 190 be */ '\0',
499 /* � 191 bf */ '\0',
500 /* � 192 c0 */ 0xe0,
501 /* � 193 c1 */ 0xe1,
502 /* � 194 c2 */ 0xe2,
503 /* � 195 c3 */ 0xe3,
504 /* � 196 c4 */ 0xe4,
505 /* � 197 c5 */ 0xe5,
506 /* � 198 c6 */ 0xe6,
507 /* � 199 c7 */ 0xe7,
508 /* � 200 c8 */ 0xe8,
509 /* � 201 c9 */ 0xe9,
510 /* � 202 ca */ 0xea,
511 /* � 203 cb */ 0xeb,
512 /* � 204 cc */ 0xec,
513 /* � 205 cd */ 0xed,
514 /* � 206 ce */ 0xee,
515 /* � 207 cf */ 0xef,
516 /* � 208 d0 */ 0xf0,
517 /* � 209 d1 */ 0xf1,
518 /* � 210 d2 */ 0xf2,
519 /* � 211 d3 */ 0xf3,
520 /* � 212 d4 */ 0xf4,
521 /* � 213 d5 */ 0xf5,
522 /* � 214 d6 */ 0xf6,
523 /* � 215 d7 */ '\0',
524 /* � 216 d8 */ 0xf8,
525 /* � 217 d9 */ 0xf9,
526 /* � 218 da */ 0xfa,
527 /* � 219 db */ 0xfb,
528 /* � 220 dc */ 0xfc,
529 /* � 221 dd */ 0xfd,
530 /* � 222 de */ 0xfe,
531 /* � 223 df */ '\0',
532 /* � 224 e0 */ 0xc0,
533 /* � 225 e1 */ 0xc1,
534 /* � 226 e2 */ 0xc2,
535 /* � 227 e3 */ 0xc3,
536 /* � 228 e4 */ 0xc4,
537 /* � 229 e5 */ 0xc5,
538 /* � 230 e6 */ 0xc6,
539 /* � 231 e7 */ 0xc7,
540 /* � 232 e8 */ 0xc8,
541 /* � 233 e9 */ 0xc9,
542 /* � 234 ea */ 0xca,
543 /* � 235 eb */ 0xcb,
544 /* � 236 ec */ 0xcc,
545 /* � 237 ed */ 0xcd,
546 /* � 238 ee */ 0xce,
547 /* � 239 ef */ 0xcf,
548 /* � 240 f0 */ 0xd0,
549 /* � 241 f1 */ 0xd1,
550 /* � 242 f2 */ 0xd2,
551 /* � 243 f3 */ 0xd3,
552 /* � 244 f4 */ 0xd4,
553 /* � 245 f5 */ 0xd5,
554 /* � 246 f6 */ 0xd6,
555 /* � 247 f7 */ '\0',
556 /* � 248 f8 */ 0xd8,
557 /* � 249 f9 */ 0xd9,
558 /* � 250 fa */ 0xda,
559 /* � 251 fb */ 0xdb,
560 /* � 252 fc */ 0xdc,
561 /* � 253 fd */ 0xdd,
562 /* � 254 fe */ 0xde,
563 /* � 255 ff */ '\0',
7c673cae
FG
564 };
565
566 ///////////////////////////////////////////////////////////////////////////
567 // Test characters for specified conditions (using iso8859-1)
568 ///////////////////////////////////////////////////////////////////////////
569 struct iso8859_1
570 {
571 typedef unsigned char char_type;
92f5a8d4 572 typedef unsigned char classify_type;
7c673cae
FG
573
574 static bool
575 isascii_(int ch)
576 {
577 return 0 == (ch & ~0x7f);
578 }
579
580 static bool
581 ischar(int ch)
582 {
583 // iso8859.1 uses all 8 bits
584 // we have to watch out for sign extensions
92f5a8d4
TL
585 return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) != 0;
586 }
587
588 // *** Note on assertions: The precondition is that the calls to
589 // these functions do not violate the required range of ch (type int)
590 // which is that strict_ischar(ch) should be true. It is the
591 // responsibility of the caller to make sure this precondition is not
592 // violated.
593
594 static bool
595 strict_ischar(int ch)
596 {
597 return ch >= 0 && ch <= 255;
7c673cae
FG
598 }
599
600 static bool
601 isalnum(int ch)
602 {
92f5a8d4 603 BOOST_ASSERT(strict_ischar(ch));
7c673cae
FG
604 return (iso8859_1_char_types[ch] & BOOST_CC_ALPHA)
605 || (iso8859_1_char_types[ch] & BOOST_CC_DIGIT);
606 }
607
608 static bool
609 isalpha(int ch)
610 {
92f5a8d4
TL
611 BOOST_ASSERT(strict_ischar(ch));
612 return (iso8859_1_char_types[ch] & BOOST_CC_ALPHA) != 0;
7c673cae
FG
613 }
614
615 static bool
616 isdigit(int ch)
617 {
92f5a8d4
TL
618 BOOST_ASSERT(strict_ischar(ch));
619 return (iso8859_1_char_types[ch] & BOOST_CC_DIGIT) != 0;
7c673cae
FG
620 }
621
622 static bool
623 isxdigit(int ch)
624 {
92f5a8d4
TL
625 BOOST_ASSERT(strict_ischar(ch));
626 return (iso8859_1_char_types[ch] & BOOST_CC_XDIGIT) != 0;
7c673cae
FG
627 }
628
629 static bool
630 iscntrl(int ch)
631 {
92f5a8d4
TL
632 BOOST_ASSERT(strict_ischar(ch));
633 return (iso8859_1_char_types[ch] & BOOST_CC_CTRL) != 0;
7c673cae
FG
634 }
635
636 static bool
637 isgraph(int ch)
638 {
639 return ('\x21' <= ch && ch <= '\x7e') || ('\xa1' <= ch && ch <= '\xff');
640 }
641
642 static bool
643 islower(int ch)
644 {
92f5a8d4
TL
645 BOOST_ASSERT(strict_ischar(ch));
646 return (iso8859_1_char_types[ch] & BOOST_CC_LOWER) != 0;
7c673cae
FG
647 }
648
649 static bool
650 isprint(int ch)
651 {
652 return ('\x20' <= ch && ch <= '\x7e') || ('\xa0' <= ch && ch <= '\xff');
653 }
654
655 static bool
656 ispunct(int ch)
657 {
92f5a8d4
TL
658 BOOST_ASSERT(strict_ischar(ch));
659 return (iso8859_1_char_types[ch] & BOOST_CC_PUNCT) != 0;
7c673cae
FG
660 }
661
662 static bool
663 isspace(int ch)
664 {
92f5a8d4
TL
665 BOOST_ASSERT(strict_ischar(ch));
666 return (iso8859_1_char_types[ch] & BOOST_CC_SPACE) != 0;
7c673cae
FG
667 }
668
669 static bool
670 isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch)
671 {
92f5a8d4 672 BOOST_ASSERT(strict_ischar(ch));
7c673cae
FG
673 return ('\x09' == ch || '\x20' == ch || '\xa0' == ch);
674 }
675
676 static bool
677 isupper(int ch)
678 {
92f5a8d4
TL
679 BOOST_ASSERT(strict_ischar(ch));
680 return (iso8859_1_char_types[ch] & BOOST_CC_UPPER) != 0;
7c673cae
FG
681 }
682
683 ///////////////////////////////////////////////////////////////////////////
684 // Simple character conversions
685 ///////////////////////////////////////////////////////////////////////////
686
687 static int
688 tolower(int ch)
689 {
92f5a8d4 690 BOOST_ASSERT(strict_ischar(ch));
7c673cae
FG
691 return isupper(ch) && '\0' != iso8859_1_char_conversion[ch] ?
692 iso8859_1_char_conversion[ch] : ch;
693 }
694
695 static int
696 toupper(int ch)
697 {
92f5a8d4 698 BOOST_ASSERT(strict_ischar(ch));
7c673cae
FG
699 return islower(ch) && '\0' != iso8859_1_char_conversion[ch] ?
700 iso8859_1_char_conversion[ch] : ch;
701 }
702
703 static ::boost::uint32_t
704 toucs4(int ch)
705 {
706 // The first 256 characters in Unicode and the UCS are
707 // identical to those in ISO/IEC-8859-1.
92f5a8d4 708 BOOST_ASSERT(strict_ischar(ch));
7c673cae
FG
709 return ch;
710 }
711 };
712
713}}}
714
715///////////////////////////////////////////////////////////////////////////////
716// undefine macros
717///////////////////////////////////////////////////////////////////////////////
718#undef BOOST_CC_DIGIT
719#undef BOOST_CC_XDIGIT
720#undef BOOST_CC_ALPHA
721#undef BOOST_CC_CTRL
722#undef BOOST_CC_LOWER
723#undef BOOST_CC_UPPER
724#undef BOOST_CC_PUNCT
725#undef BOOST_CC_SPACE
726
727#endif
728