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 31 namespace 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, 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, 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', 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', 564 }; 565 566 /////////////////////////////////////////////////////////////////////////// 567 // Test characters for specified conditions (using iso8859-1) 568 /////////////////////////////////////////////////////////////////////////// 569 struct iso8859_1 570 { 571 typedef unsigned char char_type; 572 573 static bool isascii_boost::spirit::char_encoding::iso8859_1574 isascii_(int ch) 575 { 576 return 0 == (ch & ~0x7f); 577 } 578 579 static bool ischarboost::spirit::char_encoding::iso8859_1580 ischar(int ch) 581 { 582 // iso8859.1 uses all 8 bits 583 // we have to watch out for sign extensions 584 return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) ? true : false; 585 } 586 587 static bool isalnumboost::spirit::char_encoding::iso8859_1588 isalnum(int ch) 589 { 590 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 591 return (iso8859_1_char_types[ch] & BOOST_CC_ALPHA) 592 || (iso8859_1_char_types[ch] & BOOST_CC_DIGIT); 593 } 594 595 static bool isalphaboost::spirit::char_encoding::iso8859_1596 isalpha(int ch) 597 { 598 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 599 return (iso8859_1_char_types[ch] & BOOST_CC_ALPHA) ? true : false; 600 } 601 602 static bool isdigitboost::spirit::char_encoding::iso8859_1603 isdigit(int ch) 604 { 605 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 606 return (iso8859_1_char_types[ch] & BOOST_CC_DIGIT) ? true : false; 607 } 608 609 static bool isxdigitboost::spirit::char_encoding::iso8859_1610 isxdigit(int ch) 611 { 612 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 613 return (iso8859_1_char_types[ch] & BOOST_CC_XDIGIT) ? true : false; 614 } 615 616 static bool iscntrlboost::spirit::char_encoding::iso8859_1617 iscntrl(int ch) 618 { 619 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 620 return (iso8859_1_char_types[ch] & BOOST_CC_CTRL) ? true : false; 621 } 622 623 static bool isgraphboost::spirit::char_encoding::iso8859_1624 isgraph(int ch) 625 { 626 return ('\x21' <= ch && ch <= '\x7e') || ('\xa1' <= ch && ch <= '\xff'); 627 } 628 629 static bool islowerboost::spirit::char_encoding::iso8859_1630 islower(int ch) 631 { 632 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 633 return (iso8859_1_char_types[ch] & BOOST_CC_LOWER) ? true : false; 634 } 635 636 static bool isprintboost::spirit::char_encoding::iso8859_1637 isprint(int ch) 638 { 639 return ('\x20' <= ch && ch <= '\x7e') || ('\xa0' <= ch && ch <= '\xff'); 640 } 641 642 static bool ispunctboost::spirit::char_encoding::iso8859_1643 ispunct(int ch) 644 { 645 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 646 return (iso8859_1_char_types[ch] & BOOST_CC_PUNCT) ? true : false; 647 } 648 649 static bool isspaceboost::spirit::char_encoding::iso8859_1650 isspace(int ch) 651 { 652 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 653 return (iso8859_1_char_types[ch] & BOOST_CC_SPACE) ? true : false; 654 } 655 656 static bool BOOST_PREVENT_MACRO_SUBSTITUTIONboost::spirit::char_encoding::iso8859_1657 isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch) 658 { 659 return ('\x09' == ch || '\x20' == ch || '\xa0' == ch); 660 } 661 662 static bool isupperboost::spirit::char_encoding::iso8859_1663 isupper(int ch) 664 { 665 BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); 666 return (iso8859_1_char_types[ch] & BOOST_CC_UPPER) ? true : false; 667 } 668 669 /////////////////////////////////////////////////////////////////////////// 670 // Simple character conversions 671 /////////////////////////////////////////////////////////////////////////// 672 673 static int tolowerboost::spirit::char_encoding::iso8859_1674 tolower(int ch) 675 { 676 return isupper(ch) && '\0' != iso8859_1_char_conversion[ch] ? 677 iso8859_1_char_conversion[ch] : ch; 678 } 679 680 static int toupperboost::spirit::char_encoding::iso8859_1681 toupper(int ch) 682 { 683 return islower(ch) && '\0' != iso8859_1_char_conversion[ch] ? 684 iso8859_1_char_conversion[ch] : ch; 685 } 686 687 static ::boost::uint32_t toucs4boost::spirit::char_encoding::iso8859_1688 toucs4(int ch) 689 { 690 // The first 256 characters in Unicode and the UCS are 691 // identical to those in ISO/IEC-8859-1. 692 return ch; 693 } 694 }; 695 696 }}} 697 698 /////////////////////////////////////////////////////////////////////////////// 699 // undefine macros 700 /////////////////////////////////////////////////////////////////////////////// 701 #undef BOOST_CC_DIGIT 702 #undef BOOST_CC_XDIGIT 703 #undef BOOST_CC_ALPHA 704 #undef BOOST_CC_CTRL 705 #undef BOOST_CC_LOWER 706 #undef BOOST_CC_UPPER 707 #undef BOOST_CC_PUNCT 708 #undef BOOST_CC_SPACE 709 710 #endif 711 712