| 1 | /*============================================================================= |
| 2 | Copyright (c) 2001-2011 Joel de Guzman |
| 3 | Copyright (c) 2001-2011 Hartmut Kaiser |
| 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_CHAR_CLASS_NOVEMBER_10_2006_0907AM) |
| 9 | #define BOOST_SPIRIT_CHAR_CLASS_NOVEMBER_10_2006_0907AM |
| 10 | |
| 11 | #if defined(_MSC_VER) |
| 12 | #pragma once |
| 13 | #endif |
| 14 | |
| 15 | #include <boost/config.hpp> |
| 16 | #include <boost/mpl/bool.hpp> |
| 17 | #include <boost/spirit/home/support/unused.hpp> |
| 18 | #include <boost/spirit/home/support/detail/is_spirit_tag.hpp> |
| 19 | #include <boost/type_traits/is_signed.hpp> |
| 20 | #include <boost/type_traits/make_unsigned.hpp> |
| 21 | #include <boost/type_traits/make_signed.hpp> |
| 22 | |
| 23 | #if defined(BOOST_MSVC) |
| 24 | # pragma warning(push) |
| 25 | # pragma warning(disable: 4127) // conditional expression is constant |
| 26 | # pragma warning(disable: 4800) // 'int' : forcing value to bool 'true' or 'false' warning |
| 27 | #endif |
| 28 | |
| 29 | namespace boost { namespace spirit { namespace detail |
| 30 | { |
| 31 | // Here's the thing... typical encodings (except ASCII) deal with unsigned |
| 32 | // integers > 127. ASCII uses only 127. Yet, most char and wchar_t are signed. |
| 33 | // Thus, a char with value > 127 is negative (e.g. char 233 is -23). When you |
| 34 | // cast this to an unsigned int with 32 bits, you get 4294967273! |
| 35 | // |
| 36 | // The trick is to cast to an unsigned version of the source char first |
| 37 | // before casting to the target. {P.S. Don't worry about the code, the |
| 38 | // optimizer will optimize the if-else branches} |
| 39 | |
| 40 | template <typename TargetChar, typename SourceChar> |
| 41 | TargetChar cast_char(SourceChar ch) |
| 42 | { |
| 43 | if (is_signed<TargetChar>::value != is_signed<SourceChar>::value) |
| 44 | { |
| 45 | if (is_signed<SourceChar>::value) |
| 46 | { |
| 47 | // source is signed, target is unsigned |
| 48 | typedef typename make_unsigned<SourceChar>::type USourceChar; |
| 49 | return TargetChar(USourceChar(ch)); |
| 50 | } |
| 51 | else |
| 52 | { |
| 53 | // source is unsigned, target is signed |
| 54 | typedef typename make_signed<SourceChar>::type SSourceChar; |
| 55 | return TargetChar(SSourceChar(ch)); |
| 56 | } |
| 57 | } |
| 58 | else |
| 59 | { |
| 60 | // source and target has same signedness |
| 61 | return TargetChar(ch); // just cast |
| 62 | } |
| 63 | } |
| 64 | }}} |
| 65 | |
| 66 | namespace boost { namespace spirit { namespace tag |
| 67 | { |
| 68 | struct char_ { BOOST_SPIRIT_IS_TAG() }; |
| 69 | struct string { BOOST_SPIRIT_IS_TAG() }; |
| 70 | |
| 71 | /////////////////////////////////////////////////////////////////////////// |
| 72 | // classification tags |
| 73 | struct alnum { BOOST_SPIRIT_IS_TAG() }; |
| 74 | struct alpha { BOOST_SPIRIT_IS_TAG() }; |
| 75 | struct digit { BOOST_SPIRIT_IS_TAG() }; |
| 76 | struct xdigit { BOOST_SPIRIT_IS_TAG() }; |
| 77 | struct cntrl { BOOST_SPIRIT_IS_TAG() }; |
| 78 | struct graph { BOOST_SPIRIT_IS_TAG() }; |
| 79 | struct print { BOOST_SPIRIT_IS_TAG() }; |
| 80 | struct punct { BOOST_SPIRIT_IS_TAG() }; |
| 81 | struct space { BOOST_SPIRIT_IS_TAG() }; |
| 82 | struct blank { BOOST_SPIRIT_IS_TAG() }; |
| 83 | |
| 84 | /////////////////////////////////////////////////////////////////////////// |
| 85 | // classification/conversion tags |
| 86 | struct no_case { BOOST_SPIRIT_IS_TAG() }; |
| 87 | struct lower { BOOST_SPIRIT_IS_TAG() }; |
| 88 | struct upper { BOOST_SPIRIT_IS_TAG() }; |
| 89 | struct lowernum { BOOST_SPIRIT_IS_TAG() }; |
| 90 | struct uppernum { BOOST_SPIRIT_IS_TAG() }; |
| 91 | struct ucs4 { BOOST_SPIRIT_IS_TAG() }; |
| 92 | struct encoding { BOOST_SPIRIT_IS_TAG() }; |
| 93 | |
| 94 | #if defined(BOOST_SPIRIT_UNICODE) |
| 95 | /////////////////////////////////////////////////////////////////////////// |
| 96 | // Unicode Major Categories |
| 97 | /////////////////////////////////////////////////////////////////////////// |
| 98 | struct letter { BOOST_SPIRIT_IS_TAG() }; |
| 99 | struct mark { BOOST_SPIRIT_IS_TAG() }; |
| 100 | struct number { BOOST_SPIRIT_IS_TAG() }; |
| 101 | struct separator { BOOST_SPIRIT_IS_TAG() }; |
| 102 | struct other { BOOST_SPIRIT_IS_TAG() }; |
| 103 | struct punctuation { BOOST_SPIRIT_IS_TAG() }; |
| 104 | struct symbol { BOOST_SPIRIT_IS_TAG() }; |
| 105 | |
| 106 | /////////////////////////////////////////////////////////////////////////// |
| 107 | // Unicode General Categories |
| 108 | /////////////////////////////////////////////////////////////////////////// |
| 109 | struct uppercase_letter { BOOST_SPIRIT_IS_TAG() }; |
| 110 | struct lowercase_letter { BOOST_SPIRIT_IS_TAG() }; |
| 111 | struct titlecase_letter { BOOST_SPIRIT_IS_TAG() }; |
| 112 | struct modifier_letter { BOOST_SPIRIT_IS_TAG() }; |
| 113 | struct other_letter { BOOST_SPIRIT_IS_TAG() }; |
| 114 | |
| 115 | struct nonspacing_mark { BOOST_SPIRIT_IS_TAG() }; |
| 116 | struct enclosing_mark { BOOST_SPIRIT_IS_TAG() }; |
| 117 | struct spacing_mark { BOOST_SPIRIT_IS_TAG() }; |
| 118 | |
| 119 | struct decimal_number { BOOST_SPIRIT_IS_TAG() }; |
| 120 | struct letter_number { BOOST_SPIRIT_IS_TAG() }; |
| 121 | struct other_number { BOOST_SPIRIT_IS_TAG() }; |
| 122 | |
| 123 | struct space_separator { BOOST_SPIRIT_IS_TAG() }; |
| 124 | struct line_separator { BOOST_SPIRIT_IS_TAG() }; |
| 125 | struct paragraph_separator { BOOST_SPIRIT_IS_TAG() }; |
| 126 | |
| 127 | struct control { BOOST_SPIRIT_IS_TAG() }; |
| 128 | struct format { BOOST_SPIRIT_IS_TAG() }; |
| 129 | struct private_use { BOOST_SPIRIT_IS_TAG() }; |
| 130 | struct surrogate { BOOST_SPIRIT_IS_TAG() }; |
| 131 | struct unassigned { BOOST_SPIRIT_IS_TAG() }; |
| 132 | |
| 133 | struct dash_punctuation { BOOST_SPIRIT_IS_TAG() }; |
| 134 | struct open_punctuation { BOOST_SPIRIT_IS_TAG() }; |
| 135 | struct close_punctuation { BOOST_SPIRIT_IS_TAG() }; |
| 136 | struct connector_punctuation { BOOST_SPIRIT_IS_TAG() }; |
| 137 | struct other_punctuation { BOOST_SPIRIT_IS_TAG() }; |
| 138 | struct initial_punctuation { BOOST_SPIRIT_IS_TAG() }; |
| 139 | struct final_punctuation { BOOST_SPIRIT_IS_TAG() }; |
| 140 | |
| 141 | struct math_symbol { BOOST_SPIRIT_IS_TAG() }; |
| 142 | struct currency_symbol { BOOST_SPIRIT_IS_TAG() }; |
| 143 | struct modifier_symbol { BOOST_SPIRIT_IS_TAG() }; |
| 144 | struct other_symbol { BOOST_SPIRIT_IS_TAG() }; |
| 145 | |
| 146 | /////////////////////////////////////////////////////////////////////////// |
| 147 | // Unicode Derived Categories |
| 148 | /////////////////////////////////////////////////////////////////////////// |
| 149 | struct alphabetic { BOOST_SPIRIT_IS_TAG() }; |
| 150 | struct uppercase { BOOST_SPIRIT_IS_TAG() }; |
| 151 | struct lowercase { BOOST_SPIRIT_IS_TAG() }; |
| 152 | struct white_space { BOOST_SPIRIT_IS_TAG() }; |
| 153 | struct hex_digit { BOOST_SPIRIT_IS_TAG() }; |
| 154 | struct noncharacter_code_point { BOOST_SPIRIT_IS_TAG() }; |
| 155 | struct default_ignorable_code_point { BOOST_SPIRIT_IS_TAG() }; |
| 156 | |
| 157 | /////////////////////////////////////////////////////////////////////////// |
| 158 | // Unicode Scripts |
| 159 | /////////////////////////////////////////////////////////////////////////// |
| 160 | struct adlam { BOOST_SPIRIT_IS_TAG() }; |
| 161 | struct caucasian_albanian { BOOST_SPIRIT_IS_TAG() }; |
| 162 | struct ahom { BOOST_SPIRIT_IS_TAG() }; |
| 163 | struct arabic { BOOST_SPIRIT_IS_TAG() }; |
| 164 | struct imperial_aramaic { BOOST_SPIRIT_IS_TAG() }; |
| 165 | struct armenian { BOOST_SPIRIT_IS_TAG() }; |
| 166 | struct avestan { BOOST_SPIRIT_IS_TAG() }; |
| 167 | struct balinese { BOOST_SPIRIT_IS_TAG() }; |
| 168 | struct bamum { BOOST_SPIRIT_IS_TAG() }; |
| 169 | struct bassa_vah { BOOST_SPIRIT_IS_TAG() }; |
| 170 | struct batak { BOOST_SPIRIT_IS_TAG() }; |
| 171 | struct bengali { BOOST_SPIRIT_IS_TAG() }; |
| 172 | struct bhaiksuki { BOOST_SPIRIT_IS_TAG() }; |
| 173 | struct bopomofo { BOOST_SPIRIT_IS_TAG() }; |
| 174 | struct brahmi { BOOST_SPIRIT_IS_TAG() }; |
| 175 | struct braille { BOOST_SPIRIT_IS_TAG() }; |
| 176 | struct buginese { BOOST_SPIRIT_IS_TAG() }; |
| 177 | struct buhid { BOOST_SPIRIT_IS_TAG() }; |
| 178 | struct chakma { BOOST_SPIRIT_IS_TAG() }; |
| 179 | struct canadian_aboriginal { BOOST_SPIRIT_IS_TAG() }; |
| 180 | struct carian { BOOST_SPIRIT_IS_TAG() }; |
| 181 | struct cham { BOOST_SPIRIT_IS_TAG() }; |
| 182 | struct cherokee { BOOST_SPIRIT_IS_TAG() }; |
| 183 | struct chorasmian { BOOST_SPIRIT_IS_TAG() }; |
| 184 | struct coptic { BOOST_SPIRIT_IS_TAG() }; |
| 185 | struct cypro_minoan { BOOST_SPIRIT_IS_TAG() }; |
| 186 | struct cypriot { BOOST_SPIRIT_IS_TAG() }; |
| 187 | struct cyrillic { BOOST_SPIRIT_IS_TAG() }; |
| 188 | struct devanagari { BOOST_SPIRIT_IS_TAG() }; |
| 189 | struct dives_akuru { BOOST_SPIRIT_IS_TAG() }; |
| 190 | struct dogra { BOOST_SPIRIT_IS_TAG() }; |
| 191 | struct deseret { BOOST_SPIRIT_IS_TAG() }; |
| 192 | struct duployan { BOOST_SPIRIT_IS_TAG() }; |
| 193 | struct egyptian_hieroglyphs { BOOST_SPIRIT_IS_TAG() }; |
| 194 | struct elbasan { BOOST_SPIRIT_IS_TAG() }; |
| 195 | struct elymaic { BOOST_SPIRIT_IS_TAG() }; |
| 196 | struct ethiopic { BOOST_SPIRIT_IS_TAG() }; |
| 197 | struct georgian { BOOST_SPIRIT_IS_TAG() }; |
| 198 | struct glagolitic { BOOST_SPIRIT_IS_TAG() }; |
| 199 | struct gunjala_gondi { BOOST_SPIRIT_IS_TAG() }; |
| 200 | struct masaram_gondi { BOOST_SPIRIT_IS_TAG() }; |
| 201 | struct gothic { BOOST_SPIRIT_IS_TAG() }; |
| 202 | struct grantha { BOOST_SPIRIT_IS_TAG() }; |
| 203 | struct greek { BOOST_SPIRIT_IS_TAG() }; |
| 204 | struct gujarati { BOOST_SPIRIT_IS_TAG() }; |
| 205 | struct gurmukhi { BOOST_SPIRIT_IS_TAG() }; |
| 206 | struct hangul { BOOST_SPIRIT_IS_TAG() }; |
| 207 | struct han { BOOST_SPIRIT_IS_TAG() }; |
| 208 | struct hanunoo { BOOST_SPIRIT_IS_TAG() }; |
| 209 | struct hatran { BOOST_SPIRIT_IS_TAG() }; |
| 210 | struct hebrew { BOOST_SPIRIT_IS_TAG() }; |
| 211 | struct hiragana { BOOST_SPIRIT_IS_TAG() }; |
| 212 | struct anatolian_hieroglyphs { BOOST_SPIRIT_IS_TAG() }; |
| 213 | struct pahawh_hmong { BOOST_SPIRIT_IS_TAG() }; |
| 214 | struct nyiakeng_puachue_hmong { BOOST_SPIRIT_IS_TAG() }; |
| 215 | struct katakana_or_hiragana { BOOST_SPIRIT_IS_TAG() }; |
| 216 | struct old_hungarian { BOOST_SPIRIT_IS_TAG() }; |
| 217 | struct old_italic { BOOST_SPIRIT_IS_TAG() }; |
| 218 | struct javanese { BOOST_SPIRIT_IS_TAG() }; |
| 219 | struct kayah_li { BOOST_SPIRIT_IS_TAG() }; |
| 220 | struct katakana { BOOST_SPIRIT_IS_TAG() }; |
| 221 | struct kawi { BOOST_SPIRIT_IS_TAG() }; |
| 222 | struct kharoshthi { BOOST_SPIRIT_IS_TAG() }; |
| 223 | struct khmer { BOOST_SPIRIT_IS_TAG() }; |
| 224 | struct khojki { BOOST_SPIRIT_IS_TAG() }; |
| 225 | struct khitan_small_script { BOOST_SPIRIT_IS_TAG() }; |
| 226 | struct kannada { BOOST_SPIRIT_IS_TAG() }; |
| 227 | struct kaithi { BOOST_SPIRIT_IS_TAG() }; |
| 228 | struct tai_tham { BOOST_SPIRIT_IS_TAG() }; |
| 229 | struct lao { BOOST_SPIRIT_IS_TAG() }; |
| 230 | struct latin { BOOST_SPIRIT_IS_TAG() }; |
| 231 | struct lepcha { BOOST_SPIRIT_IS_TAG() }; |
| 232 | struct limbu { BOOST_SPIRIT_IS_TAG() }; |
| 233 | struct linear_a { BOOST_SPIRIT_IS_TAG() }; |
| 234 | struct linear_b { BOOST_SPIRIT_IS_TAG() }; |
| 235 | struct lisu { BOOST_SPIRIT_IS_TAG() }; |
| 236 | struct lycian { BOOST_SPIRIT_IS_TAG() }; |
| 237 | struct lydian { BOOST_SPIRIT_IS_TAG() }; |
| 238 | struct mahajani { BOOST_SPIRIT_IS_TAG() }; |
| 239 | struct makasar { BOOST_SPIRIT_IS_TAG() }; |
| 240 | struct mandaic { BOOST_SPIRIT_IS_TAG() }; |
| 241 | struct manichaean { BOOST_SPIRIT_IS_TAG() }; |
| 242 | struct marchen { BOOST_SPIRIT_IS_TAG() }; |
| 243 | struct medefaidrin { BOOST_SPIRIT_IS_TAG() }; |
| 244 | struct mende_kikakui { BOOST_SPIRIT_IS_TAG() }; |
| 245 | struct meroitic_cursive { BOOST_SPIRIT_IS_TAG() }; |
| 246 | struct meroitic_hieroglyphs { BOOST_SPIRIT_IS_TAG() }; |
| 247 | struct malayalam { BOOST_SPIRIT_IS_TAG() }; |
| 248 | struct modi { BOOST_SPIRIT_IS_TAG() }; |
| 249 | struct mongolian { BOOST_SPIRIT_IS_TAG() }; |
| 250 | struct mro { BOOST_SPIRIT_IS_TAG() }; |
| 251 | struct meetei_mayek { BOOST_SPIRIT_IS_TAG() }; |
| 252 | struct multani { BOOST_SPIRIT_IS_TAG() }; |
| 253 | struct myanmar { BOOST_SPIRIT_IS_TAG() }; |
| 254 | struct nag_mundari { BOOST_SPIRIT_IS_TAG() }; |
| 255 | struct nandinagari { BOOST_SPIRIT_IS_TAG() }; |
| 256 | struct old_north_arabian { BOOST_SPIRIT_IS_TAG() }; |
| 257 | struct nabataean { BOOST_SPIRIT_IS_TAG() }; |
| 258 | struct newa { BOOST_SPIRIT_IS_TAG() }; |
| 259 | struct nko { BOOST_SPIRIT_IS_TAG() }; |
| 260 | struct nushu { BOOST_SPIRIT_IS_TAG() }; |
| 261 | struct ogham { BOOST_SPIRIT_IS_TAG() }; |
| 262 | struct ol_chiki { BOOST_SPIRIT_IS_TAG() }; |
| 263 | struct old_turkic { BOOST_SPIRIT_IS_TAG() }; |
| 264 | struct oriya { BOOST_SPIRIT_IS_TAG() }; |
| 265 | struct osage { BOOST_SPIRIT_IS_TAG() }; |
| 266 | struct osmanya { BOOST_SPIRIT_IS_TAG() }; |
| 267 | struct old_uyghur { BOOST_SPIRIT_IS_TAG() }; |
| 268 | struct palmyrene { BOOST_SPIRIT_IS_TAG() }; |
| 269 | struct pau_cin_hau { BOOST_SPIRIT_IS_TAG() }; |
| 270 | struct old_permic { BOOST_SPIRIT_IS_TAG() }; |
| 271 | struct phags_pa { BOOST_SPIRIT_IS_TAG() }; |
| 272 | struct inscriptional_pahlavi { BOOST_SPIRIT_IS_TAG() }; |
| 273 | struct psalter_pahlavi { BOOST_SPIRIT_IS_TAG() }; |
| 274 | struct phoenician { BOOST_SPIRIT_IS_TAG() }; |
| 275 | struct miao { BOOST_SPIRIT_IS_TAG() }; |
| 276 | struct inscriptional_parthian { BOOST_SPIRIT_IS_TAG() }; |
| 277 | struct rejang { BOOST_SPIRIT_IS_TAG() }; |
| 278 | struct hanifi_rohingya { BOOST_SPIRIT_IS_TAG() }; |
| 279 | struct runic { BOOST_SPIRIT_IS_TAG() }; |
| 280 | struct samaritan { BOOST_SPIRIT_IS_TAG() }; |
| 281 | struct old_south_arabian { BOOST_SPIRIT_IS_TAG() }; |
| 282 | struct saurashtra { BOOST_SPIRIT_IS_TAG() }; |
| 283 | struct signwriting { BOOST_SPIRIT_IS_TAG() }; |
| 284 | struct shavian { BOOST_SPIRIT_IS_TAG() }; |
| 285 | struct sharada { BOOST_SPIRIT_IS_TAG() }; |
| 286 | struct siddham { BOOST_SPIRIT_IS_TAG() }; |
| 287 | struct khudawadi { BOOST_SPIRIT_IS_TAG() }; |
| 288 | struct sinhala { BOOST_SPIRIT_IS_TAG() }; |
| 289 | struct sogdian { BOOST_SPIRIT_IS_TAG() }; |
| 290 | struct old_sogdian { BOOST_SPIRIT_IS_TAG() }; |
| 291 | struct sora_sompeng { BOOST_SPIRIT_IS_TAG() }; |
| 292 | struct soyombo { BOOST_SPIRIT_IS_TAG() }; |
| 293 | struct sundanese { BOOST_SPIRIT_IS_TAG() }; |
| 294 | struct syloti_nagri { BOOST_SPIRIT_IS_TAG() }; |
| 295 | struct syriac { BOOST_SPIRIT_IS_TAG() }; |
| 296 | struct tagbanwa { BOOST_SPIRIT_IS_TAG() }; |
| 297 | struct takri { BOOST_SPIRIT_IS_TAG() }; |
| 298 | struct tai_le { BOOST_SPIRIT_IS_TAG() }; |
| 299 | struct new_tai_lue { BOOST_SPIRIT_IS_TAG() }; |
| 300 | struct tamil { BOOST_SPIRIT_IS_TAG() }; |
| 301 | struct tangut { BOOST_SPIRIT_IS_TAG() }; |
| 302 | struct tai_viet { BOOST_SPIRIT_IS_TAG() }; |
| 303 | struct telugu { BOOST_SPIRIT_IS_TAG() }; |
| 304 | struct tifinagh { BOOST_SPIRIT_IS_TAG() }; |
| 305 | struct tagalog { BOOST_SPIRIT_IS_TAG() }; |
| 306 | struct thaana { BOOST_SPIRIT_IS_TAG() }; |
| 307 | struct thai { BOOST_SPIRIT_IS_TAG() }; |
| 308 | struct tibetan { BOOST_SPIRIT_IS_TAG() }; |
| 309 | struct tirhuta { BOOST_SPIRIT_IS_TAG() }; |
| 310 | struct tangsa { BOOST_SPIRIT_IS_TAG() }; |
| 311 | struct toto { BOOST_SPIRIT_IS_TAG() }; |
| 312 | struct ugaritic { BOOST_SPIRIT_IS_TAG() }; |
| 313 | struct vai { BOOST_SPIRIT_IS_TAG() }; |
| 314 | struct vithkuqi { BOOST_SPIRIT_IS_TAG() }; |
| 315 | struct warang_citi { BOOST_SPIRIT_IS_TAG() }; |
| 316 | struct wancho { BOOST_SPIRIT_IS_TAG() }; |
| 317 | struct old_persian { BOOST_SPIRIT_IS_TAG() }; |
| 318 | struct cuneiform { BOOST_SPIRIT_IS_TAG() }; |
| 319 | struct yezidi { BOOST_SPIRIT_IS_TAG() }; |
| 320 | struct yi { BOOST_SPIRIT_IS_TAG() }; |
| 321 | struct zanabazar_square { BOOST_SPIRIT_IS_TAG() }; |
| 322 | struct inherited { BOOST_SPIRIT_IS_TAG() }; |
| 323 | struct common { BOOST_SPIRIT_IS_TAG() }; |
| 324 | struct unknown { BOOST_SPIRIT_IS_TAG() }; |
| 325 | #endif |
| 326 | |
| 327 | /////////////////////////////////////////////////////////////////////////// |
| 328 | // This composite tag type encodes both the character |
| 329 | // set and the specific char tag (used for classification |
| 330 | // or conversion). char_code_base and char_encoding_base |
| 331 | // can be used to test for modifier membership (see modifier.hpp) |
| 332 | template <typename CharClass> |
| 333 | struct char_code_base {}; |
| 334 | |
| 335 | template <typename CharEncoding> |
| 336 | struct char_encoding_base {}; |
| 337 | |
| 338 | template <typename CharClass, typename CharEncoding> |
| 339 | struct char_code |
| 340 | : char_code_base<CharClass>, char_encoding_base<CharEncoding> |
| 341 | { |
| 342 | BOOST_SPIRIT_IS_TAG() |
| 343 | typedef CharEncoding char_encoding; // e.g. ascii |
| 344 | typedef CharClass char_class; // e.g. tag::alnum |
| 345 | }; |
| 346 | }}} |
| 347 | |
| 348 | namespace boost { namespace spirit { namespace char_class |
| 349 | { |
| 350 | /////////////////////////////////////////////////////////////////////////// |
| 351 | // Test characters for classification |
| 352 | template <typename CharEncoding> |
| 353 | struct classify |
| 354 | { |
| 355 | typedef typename CharEncoding::classify_type char_type; |
| 356 | |
| 357 | #define BOOST_SPIRIT_CLASSIFY(name, isname) \ |
| 358 | template <typename Char> \ |
| 359 | static bool \ |
| 360 | is(tag::name, Char ch) \ |
| 361 | { \ |
| 362 | return CharEncoding::isname \ |
| 363 | BOOST_PREVENT_MACRO_SUBSTITUTION \ |
| 364 | (detail::cast_char<char_type>(ch)); \ |
| 365 | } \ |
| 366 | /***/ |
| 367 | |
| 368 | BOOST_SPIRIT_CLASSIFY(char_, ischar) |
| 369 | BOOST_SPIRIT_CLASSIFY(alnum, isalnum) |
| 370 | BOOST_SPIRIT_CLASSIFY(alpha, isalpha) |
| 371 | BOOST_SPIRIT_CLASSIFY(digit, isdigit) |
| 372 | BOOST_SPIRIT_CLASSIFY(xdigit, isxdigit) |
| 373 | BOOST_SPIRIT_CLASSIFY(cntrl, iscntrl) |
| 374 | BOOST_SPIRIT_CLASSIFY(graph, isgraph) |
| 375 | BOOST_SPIRIT_CLASSIFY(lower, islower) |
| 376 | BOOST_SPIRIT_CLASSIFY(print, isprint) |
| 377 | BOOST_SPIRIT_CLASSIFY(punct, ispunct) |
| 378 | BOOST_SPIRIT_CLASSIFY(space, isspace) |
| 379 | BOOST_SPIRIT_CLASSIFY(blank, isblank) |
| 380 | BOOST_SPIRIT_CLASSIFY(upper, isupper) |
| 381 | |
| 382 | #undef BOOST_SPIRIT_CLASSIFY |
| 383 | |
| 384 | template <typename Char> |
| 385 | static bool |
| 386 | is(tag::lowernum, Char ch) |
| 387 | { |
| 388 | return CharEncoding::islower(detail::cast_char<char_type>(ch)) || |
| 389 | CharEncoding::isdigit(detail::cast_char<char_type>(ch)); |
| 390 | } |
| 391 | |
| 392 | template <typename Char> |
| 393 | static bool |
| 394 | is(tag::uppernum, Char ch) |
| 395 | { |
| 396 | return CharEncoding::isupper(detail::cast_char<char_type>(ch)) || |
| 397 | CharEncoding::isdigit(detail::cast_char<char_type>(ch)); |
| 398 | } |
| 399 | |
| 400 | #if defined(BOOST_SPIRIT_UNICODE) |
| 401 | |
| 402 | #define BOOST_SPIRIT_UNICODE_CLASSIFY(name) \ |
| 403 | template <typename Char> \ |
| 404 | static bool \ |
| 405 | is(tag::name, Char ch) \ |
| 406 | { \ |
| 407 | return CharEncoding::is_##name(detail::cast_char<char_type>(ch)); \ |
| 408 | } \ |
| 409 | /***/ |
| 410 | |
| 411 | /////////////////////////////////////////////////////////////////////////// |
| 412 | // Unicode Major Categories |
| 413 | /////////////////////////////////////////////////////////////////////////// |
| 414 | BOOST_SPIRIT_UNICODE_CLASSIFY(letter) |
| 415 | BOOST_SPIRIT_UNICODE_CLASSIFY(mark) |
| 416 | BOOST_SPIRIT_UNICODE_CLASSIFY(number) |
| 417 | BOOST_SPIRIT_UNICODE_CLASSIFY(separator) |
| 418 | BOOST_SPIRIT_UNICODE_CLASSIFY(other) |
| 419 | BOOST_SPIRIT_UNICODE_CLASSIFY(punctuation) |
| 420 | BOOST_SPIRIT_UNICODE_CLASSIFY(symbol) |
| 421 | |
| 422 | /////////////////////////////////////////////////////////////////////////// |
| 423 | // Unicode General Categories |
| 424 | /////////////////////////////////////////////////////////////////////////// |
| 425 | BOOST_SPIRIT_UNICODE_CLASSIFY(uppercase_letter) |
| 426 | BOOST_SPIRIT_UNICODE_CLASSIFY(lowercase_letter) |
| 427 | BOOST_SPIRIT_UNICODE_CLASSIFY(titlecase_letter) |
| 428 | BOOST_SPIRIT_UNICODE_CLASSIFY(modifier_letter) |
| 429 | BOOST_SPIRIT_UNICODE_CLASSIFY(other_letter) |
| 430 | |
| 431 | BOOST_SPIRIT_UNICODE_CLASSIFY(nonspacing_mark) |
| 432 | BOOST_SPIRIT_UNICODE_CLASSIFY(enclosing_mark) |
| 433 | BOOST_SPIRIT_UNICODE_CLASSIFY(spacing_mark) |
| 434 | |
| 435 | BOOST_SPIRIT_UNICODE_CLASSIFY(decimal_number) |
| 436 | BOOST_SPIRIT_UNICODE_CLASSIFY(letter_number) |
| 437 | BOOST_SPIRIT_UNICODE_CLASSIFY(other_number) |
| 438 | |
| 439 | BOOST_SPIRIT_UNICODE_CLASSIFY(space_separator) |
| 440 | BOOST_SPIRIT_UNICODE_CLASSIFY(line_separator) |
| 441 | BOOST_SPIRIT_UNICODE_CLASSIFY(paragraph_separator) |
| 442 | |
| 443 | BOOST_SPIRIT_UNICODE_CLASSIFY(control) |
| 444 | BOOST_SPIRIT_UNICODE_CLASSIFY(format) |
| 445 | BOOST_SPIRIT_UNICODE_CLASSIFY(private_use) |
| 446 | BOOST_SPIRIT_UNICODE_CLASSIFY(surrogate) |
| 447 | BOOST_SPIRIT_UNICODE_CLASSIFY(unassigned) |
| 448 | |
| 449 | BOOST_SPIRIT_UNICODE_CLASSIFY(dash_punctuation) |
| 450 | BOOST_SPIRIT_UNICODE_CLASSIFY(open_punctuation) |
| 451 | BOOST_SPIRIT_UNICODE_CLASSIFY(close_punctuation) |
| 452 | BOOST_SPIRIT_UNICODE_CLASSIFY(connector_punctuation) |
| 453 | BOOST_SPIRIT_UNICODE_CLASSIFY(other_punctuation) |
| 454 | BOOST_SPIRIT_UNICODE_CLASSIFY(initial_punctuation) |
| 455 | BOOST_SPIRIT_UNICODE_CLASSIFY(final_punctuation) |
| 456 | |
| 457 | BOOST_SPIRIT_UNICODE_CLASSIFY(math_symbol) |
| 458 | BOOST_SPIRIT_UNICODE_CLASSIFY(currency_symbol) |
| 459 | BOOST_SPIRIT_UNICODE_CLASSIFY(modifier_symbol) |
| 460 | BOOST_SPIRIT_UNICODE_CLASSIFY(other_symbol) |
| 461 | |
| 462 | /////////////////////////////////////////////////////////////////////////// |
| 463 | // Unicode Derived Categories |
| 464 | /////////////////////////////////////////////////////////////////////////// |
| 465 | BOOST_SPIRIT_UNICODE_CLASSIFY(alphabetic) |
| 466 | BOOST_SPIRIT_UNICODE_CLASSIFY(uppercase) |
| 467 | BOOST_SPIRIT_UNICODE_CLASSIFY(lowercase) |
| 468 | BOOST_SPIRIT_UNICODE_CLASSIFY(white_space) |
| 469 | BOOST_SPIRIT_UNICODE_CLASSIFY(hex_digit) |
| 470 | BOOST_SPIRIT_UNICODE_CLASSIFY(noncharacter_code_point) |
| 471 | BOOST_SPIRIT_UNICODE_CLASSIFY(default_ignorable_code_point) |
| 472 | |
| 473 | /////////////////////////////////////////////////////////////////////////// |
| 474 | // Unicode Scripts |
| 475 | /////////////////////////////////////////////////////////////////////////// |
| 476 | BOOST_SPIRIT_UNICODE_CLASSIFY(adlam) |
| 477 | BOOST_SPIRIT_UNICODE_CLASSIFY(caucasian_albanian) |
| 478 | BOOST_SPIRIT_UNICODE_CLASSIFY(ahom) |
| 479 | BOOST_SPIRIT_UNICODE_CLASSIFY(arabic) |
| 480 | BOOST_SPIRIT_UNICODE_CLASSIFY(imperial_aramaic) |
| 481 | BOOST_SPIRIT_UNICODE_CLASSIFY(armenian) |
| 482 | BOOST_SPIRIT_UNICODE_CLASSIFY(avestan) |
| 483 | BOOST_SPIRIT_UNICODE_CLASSIFY(balinese) |
| 484 | BOOST_SPIRIT_UNICODE_CLASSIFY(bamum) |
| 485 | BOOST_SPIRIT_UNICODE_CLASSIFY(bassa_vah) |
| 486 | BOOST_SPIRIT_UNICODE_CLASSIFY(batak) |
| 487 | BOOST_SPIRIT_UNICODE_CLASSIFY(bengali) |
| 488 | BOOST_SPIRIT_UNICODE_CLASSIFY(bhaiksuki) |
| 489 | BOOST_SPIRIT_UNICODE_CLASSIFY(bopomofo) |
| 490 | BOOST_SPIRIT_UNICODE_CLASSIFY(brahmi) |
| 491 | BOOST_SPIRIT_UNICODE_CLASSIFY(braille) |
| 492 | BOOST_SPIRIT_UNICODE_CLASSIFY(buginese) |
| 493 | BOOST_SPIRIT_UNICODE_CLASSIFY(buhid) |
| 494 | BOOST_SPIRIT_UNICODE_CLASSIFY(chakma) |
| 495 | BOOST_SPIRIT_UNICODE_CLASSIFY(canadian_aboriginal) |
| 496 | BOOST_SPIRIT_UNICODE_CLASSIFY(carian) |
| 497 | BOOST_SPIRIT_UNICODE_CLASSIFY(cham) |
| 498 | BOOST_SPIRIT_UNICODE_CLASSIFY(cherokee) |
| 499 | BOOST_SPIRIT_UNICODE_CLASSIFY(chorasmian) |
| 500 | BOOST_SPIRIT_UNICODE_CLASSIFY(coptic) |
| 501 | BOOST_SPIRIT_UNICODE_CLASSIFY(cypro_minoan) |
| 502 | BOOST_SPIRIT_UNICODE_CLASSIFY(cypriot) |
| 503 | BOOST_SPIRIT_UNICODE_CLASSIFY(cyrillic) |
| 504 | BOOST_SPIRIT_UNICODE_CLASSIFY(devanagari) |
| 505 | BOOST_SPIRIT_UNICODE_CLASSIFY(dives_akuru) |
| 506 | BOOST_SPIRIT_UNICODE_CLASSIFY(dogra) |
| 507 | BOOST_SPIRIT_UNICODE_CLASSIFY(deseret) |
| 508 | BOOST_SPIRIT_UNICODE_CLASSIFY(duployan) |
| 509 | BOOST_SPIRIT_UNICODE_CLASSIFY(egyptian_hieroglyphs) |
| 510 | BOOST_SPIRIT_UNICODE_CLASSIFY(elbasan) |
| 511 | BOOST_SPIRIT_UNICODE_CLASSIFY(elymaic) |
| 512 | BOOST_SPIRIT_UNICODE_CLASSIFY(ethiopic) |
| 513 | BOOST_SPIRIT_UNICODE_CLASSIFY(georgian) |
| 514 | BOOST_SPIRIT_UNICODE_CLASSIFY(glagolitic) |
| 515 | BOOST_SPIRIT_UNICODE_CLASSIFY(gunjala_gondi) |
| 516 | BOOST_SPIRIT_UNICODE_CLASSIFY(masaram_gondi) |
| 517 | BOOST_SPIRIT_UNICODE_CLASSIFY(gothic) |
| 518 | BOOST_SPIRIT_UNICODE_CLASSIFY(grantha) |
| 519 | BOOST_SPIRIT_UNICODE_CLASSIFY(greek) |
| 520 | BOOST_SPIRIT_UNICODE_CLASSIFY(gujarati) |
| 521 | BOOST_SPIRIT_UNICODE_CLASSIFY(gurmukhi) |
| 522 | BOOST_SPIRIT_UNICODE_CLASSIFY(hangul) |
| 523 | BOOST_SPIRIT_UNICODE_CLASSIFY(han) |
| 524 | BOOST_SPIRIT_UNICODE_CLASSIFY(hanunoo) |
| 525 | BOOST_SPIRIT_UNICODE_CLASSIFY(hatran) |
| 526 | BOOST_SPIRIT_UNICODE_CLASSIFY(hebrew) |
| 527 | BOOST_SPIRIT_UNICODE_CLASSIFY(hiragana) |
| 528 | BOOST_SPIRIT_UNICODE_CLASSIFY(anatolian_hieroglyphs) |
| 529 | BOOST_SPIRIT_UNICODE_CLASSIFY(pahawh_hmong) |
| 530 | BOOST_SPIRIT_UNICODE_CLASSIFY(nyiakeng_puachue_hmong) |
| 531 | BOOST_SPIRIT_UNICODE_CLASSIFY(katakana_or_hiragana) |
| 532 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_hungarian) |
| 533 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_italic) |
| 534 | BOOST_SPIRIT_UNICODE_CLASSIFY(javanese) |
| 535 | BOOST_SPIRIT_UNICODE_CLASSIFY(kayah_li) |
| 536 | BOOST_SPIRIT_UNICODE_CLASSIFY(katakana) |
| 537 | BOOST_SPIRIT_UNICODE_CLASSIFY(kawi) |
| 538 | BOOST_SPIRIT_UNICODE_CLASSIFY(kharoshthi) |
| 539 | BOOST_SPIRIT_UNICODE_CLASSIFY(khmer) |
| 540 | BOOST_SPIRIT_UNICODE_CLASSIFY(khojki) |
| 541 | BOOST_SPIRIT_UNICODE_CLASSIFY(khitan_small_script) |
| 542 | BOOST_SPIRIT_UNICODE_CLASSIFY(kannada) |
| 543 | BOOST_SPIRIT_UNICODE_CLASSIFY(kaithi) |
| 544 | BOOST_SPIRIT_UNICODE_CLASSIFY(tai_tham) |
| 545 | BOOST_SPIRIT_UNICODE_CLASSIFY(lao) |
| 546 | BOOST_SPIRIT_UNICODE_CLASSIFY(latin) |
| 547 | BOOST_SPIRIT_UNICODE_CLASSIFY(lepcha) |
| 548 | BOOST_SPIRIT_UNICODE_CLASSIFY(limbu) |
| 549 | BOOST_SPIRIT_UNICODE_CLASSIFY(linear_a) |
| 550 | BOOST_SPIRIT_UNICODE_CLASSIFY(linear_b) |
| 551 | BOOST_SPIRIT_UNICODE_CLASSIFY(lisu) |
| 552 | BOOST_SPIRIT_UNICODE_CLASSIFY(lycian) |
| 553 | BOOST_SPIRIT_UNICODE_CLASSIFY(lydian) |
| 554 | BOOST_SPIRIT_UNICODE_CLASSIFY(mahajani) |
| 555 | BOOST_SPIRIT_UNICODE_CLASSIFY(makasar) |
| 556 | BOOST_SPIRIT_UNICODE_CLASSIFY(mandaic) |
| 557 | BOOST_SPIRIT_UNICODE_CLASSIFY(manichaean) |
| 558 | BOOST_SPIRIT_UNICODE_CLASSIFY(marchen) |
| 559 | BOOST_SPIRIT_UNICODE_CLASSIFY(medefaidrin) |
| 560 | BOOST_SPIRIT_UNICODE_CLASSIFY(mende_kikakui) |
| 561 | BOOST_SPIRIT_UNICODE_CLASSIFY(meroitic_cursive) |
| 562 | BOOST_SPIRIT_UNICODE_CLASSIFY(meroitic_hieroglyphs) |
| 563 | BOOST_SPIRIT_UNICODE_CLASSIFY(malayalam) |
| 564 | BOOST_SPIRIT_UNICODE_CLASSIFY(modi) |
| 565 | BOOST_SPIRIT_UNICODE_CLASSIFY(mongolian) |
| 566 | BOOST_SPIRIT_UNICODE_CLASSIFY(mro) |
| 567 | BOOST_SPIRIT_UNICODE_CLASSIFY(meetei_mayek) |
| 568 | BOOST_SPIRIT_UNICODE_CLASSIFY(multani) |
| 569 | BOOST_SPIRIT_UNICODE_CLASSIFY(myanmar) |
| 570 | BOOST_SPIRIT_UNICODE_CLASSIFY(nag_mundari) |
| 571 | BOOST_SPIRIT_UNICODE_CLASSIFY(nandinagari) |
| 572 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_north_arabian) |
| 573 | BOOST_SPIRIT_UNICODE_CLASSIFY(nabataean) |
| 574 | BOOST_SPIRIT_UNICODE_CLASSIFY(newa) |
| 575 | BOOST_SPIRIT_UNICODE_CLASSIFY(nko) |
| 576 | BOOST_SPIRIT_UNICODE_CLASSIFY(nushu) |
| 577 | BOOST_SPIRIT_UNICODE_CLASSIFY(ogham) |
| 578 | BOOST_SPIRIT_UNICODE_CLASSIFY(ol_chiki) |
| 579 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_turkic) |
| 580 | BOOST_SPIRIT_UNICODE_CLASSIFY(oriya) |
| 581 | BOOST_SPIRIT_UNICODE_CLASSIFY(osage) |
| 582 | BOOST_SPIRIT_UNICODE_CLASSIFY(osmanya) |
| 583 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_uyghur) |
| 584 | BOOST_SPIRIT_UNICODE_CLASSIFY(palmyrene) |
| 585 | BOOST_SPIRIT_UNICODE_CLASSIFY(pau_cin_hau) |
| 586 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_permic) |
| 587 | BOOST_SPIRIT_UNICODE_CLASSIFY(phags_pa) |
| 588 | BOOST_SPIRIT_UNICODE_CLASSIFY(inscriptional_pahlavi) |
| 589 | BOOST_SPIRIT_UNICODE_CLASSIFY(psalter_pahlavi) |
| 590 | BOOST_SPIRIT_UNICODE_CLASSIFY(phoenician) |
| 591 | BOOST_SPIRIT_UNICODE_CLASSIFY(miao) |
| 592 | BOOST_SPIRIT_UNICODE_CLASSIFY(inscriptional_parthian) |
| 593 | BOOST_SPIRIT_UNICODE_CLASSIFY(rejang) |
| 594 | BOOST_SPIRIT_UNICODE_CLASSIFY(hanifi_rohingya) |
| 595 | BOOST_SPIRIT_UNICODE_CLASSIFY(runic) |
| 596 | BOOST_SPIRIT_UNICODE_CLASSIFY(samaritan) |
| 597 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_south_arabian) |
| 598 | BOOST_SPIRIT_UNICODE_CLASSIFY(saurashtra) |
| 599 | BOOST_SPIRIT_UNICODE_CLASSIFY(signwriting) |
| 600 | BOOST_SPIRIT_UNICODE_CLASSIFY(shavian) |
| 601 | BOOST_SPIRIT_UNICODE_CLASSIFY(sharada) |
| 602 | BOOST_SPIRIT_UNICODE_CLASSIFY(siddham) |
| 603 | BOOST_SPIRIT_UNICODE_CLASSIFY(khudawadi) |
| 604 | BOOST_SPIRIT_UNICODE_CLASSIFY(sinhala) |
| 605 | BOOST_SPIRIT_UNICODE_CLASSIFY(sogdian) |
| 606 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_sogdian) |
| 607 | BOOST_SPIRIT_UNICODE_CLASSIFY(sora_sompeng) |
| 608 | BOOST_SPIRIT_UNICODE_CLASSIFY(soyombo) |
| 609 | BOOST_SPIRIT_UNICODE_CLASSIFY(sundanese) |
| 610 | BOOST_SPIRIT_UNICODE_CLASSIFY(syloti_nagri) |
| 611 | BOOST_SPIRIT_UNICODE_CLASSIFY(syriac) |
| 612 | BOOST_SPIRIT_UNICODE_CLASSIFY(tagbanwa) |
| 613 | BOOST_SPIRIT_UNICODE_CLASSIFY(takri) |
| 614 | BOOST_SPIRIT_UNICODE_CLASSIFY(tai_le) |
| 615 | BOOST_SPIRIT_UNICODE_CLASSIFY(new_tai_lue) |
| 616 | BOOST_SPIRIT_UNICODE_CLASSIFY(tamil) |
| 617 | BOOST_SPIRIT_UNICODE_CLASSIFY(tangut) |
| 618 | BOOST_SPIRIT_UNICODE_CLASSIFY(tai_viet) |
| 619 | BOOST_SPIRIT_UNICODE_CLASSIFY(telugu) |
| 620 | BOOST_SPIRIT_UNICODE_CLASSIFY(tifinagh) |
| 621 | BOOST_SPIRIT_UNICODE_CLASSIFY(tagalog) |
| 622 | BOOST_SPIRIT_UNICODE_CLASSIFY(thaana) |
| 623 | BOOST_SPIRIT_UNICODE_CLASSIFY(thai) |
| 624 | BOOST_SPIRIT_UNICODE_CLASSIFY(tibetan) |
| 625 | BOOST_SPIRIT_UNICODE_CLASSIFY(tirhuta) |
| 626 | BOOST_SPIRIT_UNICODE_CLASSIFY(tangsa) |
| 627 | BOOST_SPIRIT_UNICODE_CLASSIFY(toto) |
| 628 | BOOST_SPIRIT_UNICODE_CLASSIFY(ugaritic) |
| 629 | BOOST_SPIRIT_UNICODE_CLASSIFY(vai) |
| 630 | BOOST_SPIRIT_UNICODE_CLASSIFY(vithkuqi) |
| 631 | BOOST_SPIRIT_UNICODE_CLASSIFY(warang_citi) |
| 632 | BOOST_SPIRIT_UNICODE_CLASSIFY(wancho) |
| 633 | BOOST_SPIRIT_UNICODE_CLASSIFY(old_persian) |
| 634 | BOOST_SPIRIT_UNICODE_CLASSIFY(cuneiform) |
| 635 | BOOST_SPIRIT_UNICODE_CLASSIFY(yezidi) |
| 636 | BOOST_SPIRIT_UNICODE_CLASSIFY(yi) |
| 637 | BOOST_SPIRIT_UNICODE_CLASSIFY(zanabazar_square) |
| 638 | BOOST_SPIRIT_UNICODE_CLASSIFY(inherited) |
| 639 | BOOST_SPIRIT_UNICODE_CLASSIFY(common) |
| 640 | BOOST_SPIRIT_UNICODE_CLASSIFY(unknown) |
| 641 | |
| 642 | #undef BOOST_SPIRIT_UNICODE_CLASSIFY |
| 643 | #endif |
| 644 | |
| 645 | }; |
| 646 | |
| 647 | /////////////////////////////////////////////////////////////////////////// |
| 648 | // Convert characters |
| 649 | template <typename CharEncoding> |
| 650 | struct convert |
| 651 | { |
| 652 | typedef typename CharEncoding::classify_type char_type; |
| 653 | |
| 654 | template <typename Char> |
| 655 | static Char |
| 656 | to(tag::lower, Char ch) |
| 657 | { |
| 658 | return static_cast<Char>( |
| 659 | CharEncoding::tolower(detail::cast_char<char_type>(ch))); |
| 660 | } |
| 661 | |
| 662 | template <typename Char> |
| 663 | static Char |
| 664 | to(tag::upper, Char ch) |
| 665 | { |
| 666 | return static_cast<Char>( |
| 667 | CharEncoding::toupper(detail::cast_char<char_type>(ch))); |
| 668 | } |
| 669 | |
| 670 | template <typename Char> |
| 671 | static Char |
| 672 | to(tag::ucs4, Char ch) |
| 673 | { |
| 674 | return static_cast<Char>( |
| 675 | CharEncoding::toucs4(detail::cast_char<char_type>(ch))); |
| 676 | } |
| 677 | |
| 678 | template <typename Char> |
| 679 | static Char |
| 680 | to(unused_type, Char ch) |
| 681 | { |
| 682 | return ch; |
| 683 | } |
| 684 | }; |
| 685 | |
| 686 | /////////////////////////////////////////////////////////////////////////// |
| 687 | // Info on character classification |
| 688 | template <typename CharEncoding> |
| 689 | struct what |
| 690 | { |
| 691 | #define BOOST_SPIRIT_CLASSIFY_WHAT(name, isname) \ |
| 692 | static char const* is(tag::name) \ |
| 693 | { \ |
| 694 | return isname; \ |
| 695 | } \ |
| 696 | /***/ |
| 697 | |
| 698 | BOOST_SPIRIT_CLASSIFY_WHAT(char_, "char" ) |
| 699 | BOOST_SPIRIT_CLASSIFY_WHAT(alnum, "alnum" ) |
| 700 | BOOST_SPIRIT_CLASSIFY_WHAT(alpha, "alpha" ) |
| 701 | BOOST_SPIRIT_CLASSIFY_WHAT(digit, "digit" ) |
| 702 | BOOST_SPIRIT_CLASSIFY_WHAT(xdigit, "xdigit" ) |
| 703 | BOOST_SPIRIT_CLASSIFY_WHAT(cntrl, "cntrl" ) |
| 704 | BOOST_SPIRIT_CLASSIFY_WHAT(graph, "graph" ) |
| 705 | BOOST_SPIRIT_CLASSIFY_WHAT(lower, "lower" ) |
| 706 | BOOST_SPIRIT_CLASSIFY_WHAT(lowernum, "lowernum" ) |
| 707 | BOOST_SPIRIT_CLASSIFY_WHAT(print, "print" ) |
| 708 | BOOST_SPIRIT_CLASSIFY_WHAT(punct, "punct" ) |
| 709 | BOOST_SPIRIT_CLASSIFY_WHAT(space, "space" ) |
| 710 | BOOST_SPIRIT_CLASSIFY_WHAT(blank, "blank" ) |
| 711 | BOOST_SPIRIT_CLASSIFY_WHAT(upper, "upper" ) |
| 712 | BOOST_SPIRIT_CLASSIFY_WHAT(uppernum, "uppernum" ) |
| 713 | BOOST_SPIRIT_CLASSIFY_WHAT(ucs4, "ucs4" ) |
| 714 | |
| 715 | #undef BOOST_SPIRIT_CLASSIFY_WHAT |
| 716 | |
| 717 | #if defined(BOOST_SPIRIT_UNICODE) |
| 718 | |
| 719 | #define BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(name) \ |
| 720 | static char const* is(tag::name) \ |
| 721 | { \ |
| 722 | return BOOST_PP_STRINGIZE(name); \ |
| 723 | } \ |
| 724 | /***/ |
| 725 | |
| 726 | /////////////////////////////////////////////////////////////////////////// |
| 727 | // Unicode Major Categories |
| 728 | /////////////////////////////////////////////////////////////////////////// |
| 729 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(letter) |
| 730 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mark) |
| 731 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(number) |
| 732 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(separator) |
| 733 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other) |
| 734 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(punctuation) |
| 735 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(symbol) |
| 736 | |
| 737 | /////////////////////////////////////////////////////////////////////////// |
| 738 | // Unicode General Categories |
| 739 | /////////////////////////////////////////////////////////////////////////// |
| 740 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(uppercase_letter) |
| 741 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lowercase_letter) |
| 742 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(titlecase_letter) |
| 743 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(modifier_letter) |
| 744 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other_letter) |
| 745 | |
| 746 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nonspacing_mark) |
| 747 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(enclosing_mark) |
| 748 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(spacing_mark) |
| 749 | |
| 750 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(decimal_number) |
| 751 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(letter_number) |
| 752 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other_number) |
| 753 | |
| 754 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(space_separator) |
| 755 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(line_separator) |
| 756 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(paragraph_separator) |
| 757 | |
| 758 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(control) |
| 759 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(format) |
| 760 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(private_use) |
| 761 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(surrogate) |
| 762 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(unassigned) |
| 763 | |
| 764 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(dash_punctuation) |
| 765 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(open_punctuation) |
| 766 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(close_punctuation) |
| 767 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(connector_punctuation) |
| 768 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other_punctuation) |
| 769 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(initial_punctuation) |
| 770 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(final_punctuation) |
| 771 | |
| 772 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(math_symbol) |
| 773 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(currency_symbol) |
| 774 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(modifier_symbol) |
| 775 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other_symbol) |
| 776 | |
| 777 | /////////////////////////////////////////////////////////////////////////// |
| 778 | // Unicode Derived Categories |
| 779 | /////////////////////////////////////////////////////////////////////////// |
| 780 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(alphabetic) |
| 781 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(uppercase) |
| 782 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lowercase) |
| 783 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(white_space) |
| 784 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hex_digit) |
| 785 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(noncharacter_code_point) |
| 786 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(default_ignorable_code_point) |
| 787 | |
| 788 | /////////////////////////////////////////////////////////////////////////// |
| 789 | // Unicode Scripts |
| 790 | /////////////////////////////////////////////////////////////////////////// |
| 791 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(adlam) |
| 792 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(caucasian_albanian) |
| 793 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ahom) |
| 794 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(arabic) |
| 795 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(imperial_aramaic) |
| 796 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(armenian) |
| 797 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(avestan) |
| 798 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(balinese) |
| 799 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bamum) |
| 800 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bassa_vah) |
| 801 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(batak) |
| 802 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bengali) |
| 803 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bhaiksuki) |
| 804 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bopomofo) |
| 805 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(brahmi) |
| 806 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(braille) |
| 807 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(buginese) |
| 808 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(buhid) |
| 809 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(chakma) |
| 810 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(canadian_aboriginal) |
| 811 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(carian) |
| 812 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cham) |
| 813 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cherokee) |
| 814 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(chorasmian) |
| 815 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(coptic) |
| 816 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cypro_minoan) |
| 817 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cypriot) |
| 818 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cyrillic) |
| 819 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(devanagari) |
| 820 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(dives_akuru) |
| 821 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(dogra) |
| 822 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(deseret) |
| 823 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(duployan) |
| 824 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(egyptian_hieroglyphs) |
| 825 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(elbasan) |
| 826 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(elymaic) |
| 827 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ethiopic) |
| 828 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(georgian) |
| 829 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(glagolitic) |
| 830 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(gunjala_gondi) |
| 831 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(masaram_gondi) |
| 832 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(gothic) |
| 833 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(grantha) |
| 834 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(greek) |
| 835 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(gujarati) |
| 836 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(gurmukhi) |
| 837 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hangul) |
| 838 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(han) |
| 839 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hanunoo) |
| 840 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hatran) |
| 841 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hebrew) |
| 842 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hiragana) |
| 843 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(anatolian_hieroglyphs) |
| 844 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(pahawh_hmong) |
| 845 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nyiakeng_puachue_hmong) |
| 846 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(katakana_or_hiragana) |
| 847 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_hungarian) |
| 848 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_italic) |
| 849 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(javanese) |
| 850 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kayah_li) |
| 851 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(katakana) |
| 852 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kawi) |
| 853 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kharoshthi) |
| 854 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(khmer) |
| 855 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(khojki) |
| 856 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(khitan_small_script) |
| 857 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kannada) |
| 858 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kaithi) |
| 859 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tai_tham) |
| 860 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lao) |
| 861 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(latin) |
| 862 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lepcha) |
| 863 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(limbu) |
| 864 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(linear_a) |
| 865 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(linear_b) |
| 866 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lisu) |
| 867 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lycian) |
| 868 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lydian) |
| 869 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mahajani) |
| 870 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(makasar) |
| 871 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mandaic) |
| 872 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(manichaean) |
| 873 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(marchen) |
| 874 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(medefaidrin) |
| 875 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mende_kikakui) |
| 876 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(meroitic_cursive) |
| 877 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(meroitic_hieroglyphs) |
| 878 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(malayalam) |
| 879 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(modi) |
| 880 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mongolian) |
| 881 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mro) |
| 882 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(meetei_mayek) |
| 883 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(multani) |
| 884 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(myanmar) |
| 885 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nag_mundari) |
| 886 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nandinagari) |
| 887 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_north_arabian) |
| 888 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nabataean) |
| 889 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(newa) |
| 890 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nko) |
| 891 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nushu) |
| 892 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ogham) |
| 893 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ol_chiki) |
| 894 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_turkic) |
| 895 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(oriya) |
| 896 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(osage) |
| 897 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(osmanya) |
| 898 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_uyghur) |
| 899 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(palmyrene) |
| 900 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(pau_cin_hau) |
| 901 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_permic) |
| 902 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(phags_pa) |
| 903 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(inscriptional_pahlavi) |
| 904 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(psalter_pahlavi) |
| 905 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(phoenician) |
| 906 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(miao) |
| 907 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(inscriptional_parthian) |
| 908 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(rejang) |
| 909 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hanifi_rohingya) |
| 910 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(runic) |
| 911 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(samaritan) |
| 912 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_south_arabian) |
| 913 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(saurashtra) |
| 914 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(signwriting) |
| 915 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(shavian) |
| 916 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sharada) |
| 917 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(siddham) |
| 918 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(khudawadi) |
| 919 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sinhala) |
| 920 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sogdian) |
| 921 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_sogdian) |
| 922 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sora_sompeng) |
| 923 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(soyombo) |
| 924 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sundanese) |
| 925 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(syloti_nagri) |
| 926 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(syriac) |
| 927 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tagbanwa) |
| 928 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(takri) |
| 929 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tai_le) |
| 930 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(new_tai_lue) |
| 931 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tamil) |
| 932 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tangut) |
| 933 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tai_viet) |
| 934 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(telugu) |
| 935 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tifinagh) |
| 936 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tagalog) |
| 937 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(thaana) |
| 938 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(thai) |
| 939 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tibetan) |
| 940 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tirhuta) |
| 941 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tangsa) |
| 942 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(toto) |
| 943 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ugaritic) |
| 944 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(vai) |
| 945 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(vithkuqi) |
| 946 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(warang_citi) |
| 947 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(wancho) |
| 948 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_persian) |
| 949 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cuneiform) |
| 950 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(yezidi) |
| 951 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(yi) |
| 952 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(zanabazar_square) |
| 953 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(inherited) |
| 954 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(common) |
| 955 | BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(unknown) |
| 956 | |
| 957 | #undef BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT |
| 958 | #endif |
| 959 | |
| 960 | }; |
| 961 | }}} |
| 962 | |
| 963 | namespace boost { namespace spirit { namespace traits |
| 964 | { |
| 965 | /////////////////////////////////////////////////////////////////////////// |
| 966 | template <typename CharParam, typename CharEncoding> |
| 967 | struct ischar |
| 968 | { |
| 969 | static bool call(CharParam const& ch) |
| 970 | { |
| 971 | return CharEncoding::ischar(int(ch)); |
| 972 | } |
| 973 | }; |
| 974 | }}} |
| 975 | |
| 976 | #if defined(BOOST_MSVC) |
| 977 | # pragma warning(pop) |
| 978 | #endif |
| 979 | |
| 980 | #endif |
| 981 | |
| 982 | |
| 983 | |