Chris@102: /*============================================================================= Chris@102: Copyright (c) 2001-2014 Joel de Guzman Chris@102: Chris@102: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@102: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@102: ==============================================================================*/ Chris@102: #if !defined(BOOST_SPIRIT_X3_UNICODE_JAN_20_2012_1218AM) Chris@102: #define BOOST_SPIRIT_X3_UNICODE_JAN_20_2012_1218AM Chris@102: Chris@102: #if defined(_MSC_VER) Chris@102: #pragma once Chris@102: #endif Chris@102: Chris@102: #include Chris@102: #include Chris@102: #include Chris@102: #include Chris@102: Chris@102: namespace boost { namespace spirit { namespace x3 Chris@102: { Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Major Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: struct char_tag; Chris@102: struct alnum_tag; Chris@102: struct alpha_tag; Chris@102: struct blank_tag; Chris@102: struct cntrl_tag; Chris@102: struct digit_tag; Chris@102: struct graph_tag; Chris@102: struct print_tag; Chris@102: struct punct_tag; Chris@102: struct space_tag; Chris@102: struct xdigit_tag; Chris@102: struct lower_tag; Chris@102: struct upper_tag; Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Major Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: struct letter_tag {}; Chris@102: struct mark_tag {}; Chris@102: struct number_tag {}; Chris@102: struct separator_tag {}; Chris@102: struct other_tag {}; Chris@102: struct punctuation_tag {}; Chris@102: struct symbol_tag {}; Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode General Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: struct uppercase_letter_tag {}; Chris@102: struct lowercase_letter_tag {}; Chris@102: struct titlecase_letter_tag {}; Chris@102: struct modifier_letter_tag {}; Chris@102: struct other_letter_tag {}; Chris@102: Chris@102: struct nonspacing_mark_tag {}; Chris@102: struct enclosing_mark_tag {}; Chris@102: struct spacing_mark_tag {}; Chris@102: Chris@102: struct decimal_number_tag {}; Chris@102: struct letter_number_tag {}; Chris@102: struct other_number_tag {}; Chris@102: Chris@102: struct space_separator_tag {}; Chris@102: struct line_separator_tag {}; Chris@102: struct paragraph_separator_tag {}; Chris@102: Chris@102: struct control_tag {}; Chris@102: struct format_tag {}; Chris@102: struct private_use_tag {}; Chris@102: struct surrogate_tag {}; Chris@102: struct unassigned_tag {}; Chris@102: Chris@102: struct dash_punctuation_tag {}; Chris@102: struct open_punctuation_tag {}; Chris@102: struct close_punctuation_tag {}; Chris@102: struct connector_punctuation_tag {}; Chris@102: struct other_punctuation_tag {}; Chris@102: struct initial_punctuation_tag {}; Chris@102: struct final_punctuation_tag {}; Chris@102: Chris@102: struct math_symbol_tag {}; Chris@102: struct currency_symbol_tag {}; Chris@102: struct modifier_symbol_tag {}; Chris@102: struct other_symbol_tag {}; Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Derived Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: struct alphabetic_tag {}; Chris@102: struct uppercase_tag {}; Chris@102: struct lowercase_tag {}; Chris@102: struct white_space_tag {}; Chris@102: struct hex_digit_tag {}; Chris@102: struct noncharacter_code_point_tag {}; Chris@102: struct default_ignorable_code_point_tag {}; Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Scripts Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: struct arabic_tag {}; Chris@102: struct imperial_aramaic_tag {}; Chris@102: struct armenian_tag {}; Chris@102: struct avestan_tag {}; Chris@102: struct balinese_tag {}; Chris@102: struct bamum_tag {}; Chris@102: struct bengali_tag {}; Chris@102: struct bopomofo_tag {}; Chris@102: struct braille_tag {}; Chris@102: struct buginese_tag {}; Chris@102: struct buhid_tag {}; Chris@102: struct canadian_aboriginal_tag {}; Chris@102: struct carian_tag {}; Chris@102: struct cham_tag {}; Chris@102: struct cherokee_tag {}; Chris@102: struct coptic_tag {}; Chris@102: struct cypriot_tag {}; Chris@102: struct cyrillic_tag {}; Chris@102: struct devanagari_tag {}; Chris@102: struct deseret_tag {}; Chris@102: struct egyptian_hieroglyphs_tag {}; Chris@102: struct ethiopic_tag {}; Chris@102: struct georgian_tag {}; Chris@102: struct glagolitic_tag {}; Chris@102: struct gothic_tag {}; Chris@102: struct greek_tag {}; Chris@102: struct gujarati_tag {}; Chris@102: struct gurmukhi_tag {}; Chris@102: struct hangul_tag {}; Chris@102: struct han_tag {}; Chris@102: struct hanunoo_tag {}; Chris@102: struct hebrew_tag {}; Chris@102: struct hiragana_tag {}; Chris@102: struct katakana_or_hiragana_tag {}; Chris@102: struct old_italic_tag {}; Chris@102: struct javanese_tag {}; Chris@102: struct kayah_li_tag {}; Chris@102: struct katakana_tag {}; Chris@102: struct kharoshthi_tag {}; Chris@102: struct khmer_tag {}; Chris@102: struct kannada_tag {}; Chris@102: struct kaithi_tag {}; Chris@102: struct tai_tham_tag {}; Chris@102: struct lao_tag {}; Chris@102: struct latin_tag {}; Chris@102: struct lepcha_tag {}; Chris@102: struct limbu_tag {}; Chris@102: struct linear_b_tag {}; Chris@102: struct lisu_tag {}; Chris@102: struct lycian_tag {}; Chris@102: struct lydian_tag {}; Chris@102: struct malayalam_tag {}; Chris@102: struct mongolian_tag {}; Chris@102: struct meetei_mayek_tag {}; Chris@102: struct myanmar_tag {}; Chris@102: struct nko_tag {}; Chris@102: struct ogham_tag {}; Chris@102: struct ol_chiki_tag {}; Chris@102: struct old_turkic_tag {}; Chris@102: struct oriya_tag {}; Chris@102: struct osmanya_tag {}; Chris@102: struct phags_pa_tag {}; Chris@102: struct inscriptional_pahlavi_tag {}; Chris@102: struct phoenician_tag {}; Chris@102: struct inscriptional_parthian_tag {}; Chris@102: struct rejang_tag {}; Chris@102: struct runic_tag {}; Chris@102: struct samaritan_tag {}; Chris@102: struct old_south_arabian_tag {}; Chris@102: struct saurashtra_tag {}; Chris@102: struct shavian_tag {}; Chris@102: struct sinhala_tag {}; Chris@102: struct sundanese_tag {}; Chris@102: struct syloti_nagri_tag {}; Chris@102: struct syriac_tag {}; Chris@102: struct tagbanwa_tag {}; Chris@102: struct tai_le_tag {}; Chris@102: struct new_tai_lue_tag {}; Chris@102: struct tamil_tag {}; Chris@102: struct tai_viet_tag {}; Chris@102: struct telugu_tag {}; Chris@102: struct tifinagh_tag {}; Chris@102: struct tagalog_tag {}; Chris@102: struct thaana_tag {}; Chris@102: struct thai_tag {}; Chris@102: struct tibetan_tag {}; Chris@102: struct ugaritic_tag {}; Chris@102: struct vai_tag {}; Chris@102: struct old_persian_tag {}; Chris@102: struct cuneiform_tag {}; Chris@102: struct yi_tag {}; Chris@102: struct inherited_tag {}; Chris@102: struct common_tag {}; Chris@102: struct unknown_tag {}; Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: struct unicode_char_class_base Chris@102: { Chris@102: typedef char_encoding::unicode encoding; Chris@102: typedef char_encoding::unicode::char_type char_type; Chris@102: Chris@102: #define BOOST_SPIRIT_X3_BASIC_CLASSIFY(name) \ Chris@102: template \ Chris@102: static bool \ Chris@102: is(name##_tag, Char ch) \ Chris@102: { \ Chris@102: return encoding::is ##name \ Chris@102: BOOST_PREVENT_MACRO_SUBSTITUTION \ Chris@102: (detail::cast_char(ch)); \ Chris@102: } \ Chris@102: /***/ Chris@102: Chris@102: #define BOOST_SPIRIT_X3_CLASSIFY(name) \ Chris@102: template \ Chris@102: static bool \ Chris@102: is(name##_tag, Char ch) \ Chris@102: { \ Chris@102: return encoding::is_##name \ Chris@102: BOOST_PREVENT_MACRO_SUBSTITUTION \ Chris@102: (detail::cast_char(ch)); \ Chris@102: } \ Chris@102: /***/ Chris@102: Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Major Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(char) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(alnum) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(alpha) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(digit) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(xdigit) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(cntrl) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(graph) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(lower) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(print) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(punct) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(space) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(blank) Chris@102: BOOST_SPIRIT_X3_BASIC_CLASSIFY(upper) Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Major Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CLASSIFY(letter) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(mark) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(number) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(separator) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(other) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(punctuation) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(symbol) Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode General Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CLASSIFY(uppercase_letter) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(lowercase_letter) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(titlecase_letter) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(modifier_letter) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(other_letter) Chris@102: Chris@102: BOOST_SPIRIT_X3_CLASSIFY(nonspacing_mark) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(enclosing_mark) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(spacing_mark) Chris@102: Chris@102: BOOST_SPIRIT_X3_CLASSIFY(decimal_number) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(letter_number) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(other_number) Chris@102: Chris@102: BOOST_SPIRIT_X3_CLASSIFY(space_separator) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(line_separator) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(paragraph_separator) Chris@102: Chris@102: BOOST_SPIRIT_X3_CLASSIFY(control) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(format) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(private_use) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(surrogate) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(unassigned) Chris@102: Chris@102: BOOST_SPIRIT_X3_CLASSIFY(dash_punctuation) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(open_punctuation) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(close_punctuation) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(connector_punctuation) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(other_punctuation) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(initial_punctuation) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(final_punctuation) Chris@102: Chris@102: BOOST_SPIRIT_X3_CLASSIFY(math_symbol) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(currency_symbol) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(modifier_symbol) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(other_symbol) Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Derived Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CLASSIFY(alphabetic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(uppercase) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(lowercase) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(white_space) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(hex_digit) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(noncharacter_code_point) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(default_ignorable_code_point) Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Scripts Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CLASSIFY(arabic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(imperial_aramaic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(armenian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(avestan) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(balinese) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(bamum) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(bengali) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(bopomofo) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(braille) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(buginese) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(buhid) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(canadian_aboriginal) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(carian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(cham) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(cherokee) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(coptic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(cypriot) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(cyrillic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(devanagari) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(deseret) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(egyptian_hieroglyphs) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(ethiopic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(georgian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(glagolitic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(gothic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(greek) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(gujarati) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(gurmukhi) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(hangul) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(han) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(hanunoo) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(hebrew) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(hiragana) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(katakana_or_hiragana) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(old_italic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(javanese) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(kayah_li) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(katakana) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(kharoshthi) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(khmer) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(kannada) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(kaithi) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(tai_tham) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(lao) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(latin) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(lepcha) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(limbu) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(linear_b) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(lisu) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(lycian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(lydian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(malayalam) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(mongolian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(meetei_mayek) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(myanmar) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(nko) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(ogham) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(ol_chiki) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(old_turkic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(oriya) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(osmanya) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(phags_pa) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(inscriptional_pahlavi) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(phoenician) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(inscriptional_parthian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(rejang) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(runic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(samaritan) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(old_south_arabian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(saurashtra) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(shavian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(sinhala) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(sundanese) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(syloti_nagri) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(syriac) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(tagbanwa) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(tai_le) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(new_tai_lue) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(tamil) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(tai_viet) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(telugu) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(tifinagh) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(tagalog) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(thaana) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(thai) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(tibetan) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(ugaritic) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(vai) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(old_persian) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(cuneiform) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(yi) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(inherited) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(common) Chris@102: BOOST_SPIRIT_X3_CLASSIFY(unknown) Chris@102: Chris@102: #undef BOOST_SPIRIT_X3_BASIC_CLASSIFY Chris@102: #undef BOOST_SPIRIT_X3_CLASSIFY Chris@102: }; Chris@102: Chris@102: template Chris@102: struct unicode_char_class Chris@102: : char_parser> Chris@102: { Chris@102: typedef char_encoding::unicode encoding; Chris@102: typedef Tag tag; Chris@102: typedef typename encoding::char_type char_type; Chris@102: typedef char_type attribute_type; Chris@102: static bool const has_attribute = true; Chris@102: Chris@102: template Chris@102: bool test(Char ch, Context const&) const Chris@102: { Chris@102: return ((sizeof(Char) <= sizeof(char_type)) || encoding::ischar(ch)) Chris@102: && unicode_char_class_base::is(tag(), ch); Chris@102: } Chris@102: }; Chris@102: Chris@102: #define BOOST_SPIRIT_X3_CHAR_CLASS(name) \ Chris@102: typedef unicode_char_class name##_type; \ Chris@102: name##_type const name = name##_type(); \ Chris@102: /***/ Chris@102: Chris@102: namespace unicode Chris@102: { Chris@102: typedef any_char char_type; Chris@102: char_type const char_ = char_type(); Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Major Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(alnum) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(alpha) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(digit) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(xdigit) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(cntrl) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(graph) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(lower) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(print) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(punct) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(space) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(blank) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(upper) Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Major Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(letter) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(mark) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(number) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(separator) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(other) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(punctuation) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(symbol) Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode General Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(uppercase_letter) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(lowercase_letter) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(titlecase_letter) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(modifier_letter) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(other_letter) Chris@102: Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(nonspacing_mark) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(enclosing_mark) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(spacing_mark) Chris@102: Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(decimal_number) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(letter_number) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(other_number) Chris@102: Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(space_separator) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(line_separator) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(paragraph_separator) Chris@102: Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(control) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(format) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(private_use) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(surrogate) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(unassigned) Chris@102: Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(dash_punctuation) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(open_punctuation) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(close_punctuation) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(connector_punctuation) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(other_punctuation) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(initial_punctuation) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(final_punctuation) Chris@102: Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(math_symbol) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(currency_symbol) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(modifier_symbol) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(other_symbol) Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Derived Categories Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(alphabetic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(uppercase) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(lowercase) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(white_space) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(hex_digit) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(noncharacter_code_point) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(default_ignorable_code_point) Chris@102: Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: // Unicode Scripts Chris@102: /////////////////////////////////////////////////////////////////////////// Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(arabic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(imperial_aramaic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(armenian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(avestan) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(balinese) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(bamum) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(bengali) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(bopomofo) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(braille) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(buginese) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(buhid) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(canadian_aboriginal) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(carian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(cham) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(cherokee) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(coptic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(cypriot) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(cyrillic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(devanagari) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(deseret) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(egyptian_hieroglyphs) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(ethiopic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(georgian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(glagolitic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(gothic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(greek) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(gujarati) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(gurmukhi) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(hangul) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(han) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(hanunoo) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(hebrew) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(hiragana) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(katakana_or_hiragana) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(old_italic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(javanese) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(kayah_li) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(katakana) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(kharoshthi) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(khmer) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(kannada) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(kaithi) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(tai_tham) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(lao) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(latin) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(lepcha) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(limbu) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(linear_b) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(lisu) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(lycian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(lydian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(malayalam) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(mongolian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(meetei_mayek) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(myanmar) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(nko) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(ogham) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(ol_chiki) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(old_turkic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(oriya) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(osmanya) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(phags_pa) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_pahlavi) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(phoenician) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_parthian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(rejang) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(runic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(samaritan) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(old_south_arabian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(saurashtra) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(shavian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(sinhala) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(sundanese) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(syloti_nagri) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(syriac) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(tagbanwa) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(tai_le) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(new_tai_lue) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(tamil) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(tai_viet) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(telugu) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(tifinagh) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(tagalog) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(thaana) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(thai) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(tibetan) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(ugaritic) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(vai) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(old_persian) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(cuneiform) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(yi) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(inherited) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(common) Chris@102: BOOST_SPIRIT_X3_CHAR_CLASS(unknown) Chris@102: } Chris@102: Chris@102: #undef BOOST_SPIRIT_X3_CHAR_CLASS Chris@102: Chris@102: }}} Chris@102: Chris@102: #endif