Imported Upstream version 1.72.0
[platform/upstream/boost.git] / boost / spirit / home / x3 / char / unicode.hpp
1 /*=============================================================================
2     Copyright (c) 2001-2014 Joel de Guzman
3
4     Distributed under the Boost Software License, Version 1.0. (See accompanying
5     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 ==============================================================================*/
7 #if !defined(BOOST_SPIRIT_X3_UNICODE_JAN_20_2012_1218AM)
8 #define BOOST_SPIRIT_X3_UNICODE_JAN_20_2012_1218AM
9
10 #include <boost/spirit/home/x3/char/char_parser.hpp>
11 #include <boost/spirit/home/x3/char/char.hpp>
12 #include <boost/spirit/home/x3/char/detail/cast_char.hpp>
13 #include <boost/spirit/home/support/char_encoding/unicode.hpp>
14
15 namespace boost { namespace spirit { namespace x3
16 {
17     ///////////////////////////////////////////////////////////////////////////
18     //  Unicode Major Categories
19     ///////////////////////////////////////////////////////////////////////////
20     struct char_tag;
21     struct alnum_tag;
22     struct alpha_tag;
23     struct blank_tag;
24     struct cntrl_tag;
25     struct digit_tag;
26     struct graph_tag;
27     struct print_tag;
28     struct punct_tag;
29     struct space_tag;
30     struct xdigit_tag;
31     struct lower_tag;
32     struct upper_tag;
33
34     ///////////////////////////////////////////////////////////////////////////
35     //  Unicode Major Categories
36     ///////////////////////////////////////////////////////////////////////////
37     struct letter_tag {};
38     struct mark_tag {};
39     struct number_tag {};
40     struct separator_tag {};
41     struct other_tag {};
42     struct punctuation_tag {};
43     struct symbol_tag {};
44
45     ///////////////////////////////////////////////////////////////////////////
46     //  Unicode General Categories
47     ///////////////////////////////////////////////////////////////////////////
48     struct uppercase_letter_tag {};
49     struct lowercase_letter_tag {};
50     struct titlecase_letter_tag {};
51     struct modifier_letter_tag {};
52     struct other_letter_tag {};
53
54     struct nonspacing_mark_tag {};
55     struct enclosing_mark_tag {};
56     struct spacing_mark_tag {};
57
58     struct decimal_number_tag {};
59     struct letter_number_tag {};
60     struct other_number_tag {};
61
62     struct space_separator_tag {};
63     struct line_separator_tag {};
64     struct paragraph_separator_tag {};
65
66     struct control_tag {};
67     struct format_tag {};
68     struct private_use_tag {};
69     struct surrogate_tag {};
70     struct unassigned_tag {};
71
72     struct dash_punctuation_tag {};
73     struct open_punctuation_tag {};
74     struct close_punctuation_tag {};
75     struct connector_punctuation_tag {};
76     struct other_punctuation_tag {};
77     struct initial_punctuation_tag {};
78     struct final_punctuation_tag {};
79
80     struct math_symbol_tag {};
81     struct currency_symbol_tag {};
82     struct modifier_symbol_tag {};
83     struct other_symbol_tag {};
84
85     ///////////////////////////////////////////////////////////////////////////
86     //  Unicode Derived Categories
87     ///////////////////////////////////////////////////////////////////////////
88     struct alphabetic_tag {};
89     struct uppercase_tag {};
90     struct lowercase_tag {};
91     struct white_space_tag {};
92     struct hex_digit_tag {};
93     struct noncharacter_code_point_tag {};
94     struct default_ignorable_code_point_tag {};
95
96     ///////////////////////////////////////////////////////////////////////////
97     //  Unicode Scripts
98     ///////////////////////////////////////////////////////////////////////////
99     struct arabic_tag {};
100     struct imperial_aramaic_tag {};
101     struct armenian_tag {};
102     struct avestan_tag {};
103     struct balinese_tag {};
104     struct bamum_tag {};
105     struct bengali_tag {};
106     struct bopomofo_tag {};
107     struct braille_tag {};
108     struct buginese_tag {};
109     struct buhid_tag {};
110     struct canadian_aboriginal_tag {};
111     struct carian_tag {};
112     struct cham_tag {};
113     struct cherokee_tag {};
114     struct coptic_tag {};
115     struct cypriot_tag {};
116     struct cyrillic_tag {};
117     struct devanagari_tag {};
118     struct deseret_tag {};
119     struct egyptian_hieroglyphs_tag {};
120     struct ethiopic_tag {};
121     struct georgian_tag {};
122     struct glagolitic_tag {};
123     struct gothic_tag {};
124     struct greek_tag {};
125     struct gujarati_tag {};
126     struct gurmukhi_tag {};
127     struct hangul_tag {};
128     struct han_tag {};
129     struct hanunoo_tag {};
130     struct hebrew_tag {};
131     struct hiragana_tag {};
132     struct katakana_or_hiragana_tag {};
133     struct old_italic_tag {};
134     struct javanese_tag {};
135     struct kayah_li_tag {};
136     struct katakana_tag {};
137     struct kharoshthi_tag {};
138     struct khmer_tag {};
139     struct kannada_tag {};
140     struct kaithi_tag {};
141     struct tai_tham_tag {};
142     struct lao_tag {};
143     struct latin_tag {};
144     struct lepcha_tag {};
145     struct limbu_tag {};
146     struct linear_b_tag {};
147     struct lisu_tag {};
148     struct lycian_tag {};
149     struct lydian_tag {};
150     struct malayalam_tag {};
151     struct mongolian_tag {};
152     struct meetei_mayek_tag {};
153     struct myanmar_tag {};
154     struct nko_tag {};
155     struct ogham_tag {};
156     struct ol_chiki_tag {};
157     struct old_turkic_tag {};
158     struct oriya_tag {};
159     struct osmanya_tag {};
160     struct phags_pa_tag {};
161     struct inscriptional_pahlavi_tag {};
162     struct phoenician_tag {};
163     struct inscriptional_parthian_tag {};
164     struct rejang_tag {};
165     struct runic_tag {};
166     struct samaritan_tag {};
167     struct old_south_arabian_tag {};
168     struct saurashtra_tag {};
169     struct shavian_tag {};
170     struct sinhala_tag {};
171     struct sundanese_tag {};
172     struct syloti_nagri_tag {};
173     struct syriac_tag {};
174     struct tagbanwa_tag {};
175     struct tai_le_tag {};
176     struct new_tai_lue_tag {};
177     struct tamil_tag {};
178     struct tai_viet_tag {};
179     struct telugu_tag {};
180     struct tifinagh_tag {};
181     struct tagalog_tag {};
182     struct thaana_tag {};
183     struct thai_tag {};
184     struct tibetan_tag {};
185     struct ugaritic_tag {};
186     struct vai_tag {};
187     struct old_persian_tag {};
188     struct cuneiform_tag {};
189     struct yi_tag {};
190     struct inherited_tag {};
191     struct common_tag {};
192     struct unknown_tag {};
193
194     ///////////////////////////////////////////////////////////////////////////
195     struct unicode_char_class_base
196     {
197         typedef char_encoding::unicode encoding;
198         typedef char_encoding::unicode::char_type char_type;
199
200 #define BOOST_SPIRIT_X3_BASIC_CLASSIFY(name)                                     \
201         template <typename Char>                                                 \
202         static bool                                                              \
203         is(name##_tag, Char ch)                                                  \
204         {                                                                        \
205             return encoding::is ##name                                           \
206                 BOOST_PREVENT_MACRO_SUBSTITUTION                                 \
207                     (detail::cast_char<char_type>(ch));                          \
208         }                                                                        \
209         /***/
210
211 #define BOOST_SPIRIT_X3_CLASSIFY(name)                                           \
212         template <typename Char>                                                 \
213         static bool                                                              \
214         is(name##_tag, Char ch)                                                  \
215         {                                                                        \
216             return encoding::is_##name                                           \
217                 BOOST_PREVENT_MACRO_SUBSTITUTION                                 \
218                     (detail::cast_char<char_type>(ch));                          \
219         }                                                                        \
220         /***/
221
222
223     ///////////////////////////////////////////////////////////////////////////
224     //  Unicode Major Categories
225     ///////////////////////////////////////////////////////////////////////////
226         BOOST_SPIRIT_X3_BASIC_CLASSIFY(char)
227         BOOST_SPIRIT_X3_BASIC_CLASSIFY(alnum)
228         BOOST_SPIRIT_X3_BASIC_CLASSIFY(alpha)
229         BOOST_SPIRIT_X3_BASIC_CLASSIFY(digit)
230         BOOST_SPIRIT_X3_BASIC_CLASSIFY(xdigit)
231         BOOST_SPIRIT_X3_BASIC_CLASSIFY(cntrl)
232         BOOST_SPIRIT_X3_BASIC_CLASSIFY(graph)
233         BOOST_SPIRIT_X3_BASIC_CLASSIFY(lower)
234         BOOST_SPIRIT_X3_BASIC_CLASSIFY(print)
235         BOOST_SPIRIT_X3_BASIC_CLASSIFY(punct)
236         BOOST_SPIRIT_X3_BASIC_CLASSIFY(space)
237         BOOST_SPIRIT_X3_BASIC_CLASSIFY(blank)
238         BOOST_SPIRIT_X3_BASIC_CLASSIFY(upper)
239
240     ///////////////////////////////////////////////////////////////////////////
241     //  Unicode Major Categories
242     ///////////////////////////////////////////////////////////////////////////
243         BOOST_SPIRIT_X3_CLASSIFY(letter)
244         BOOST_SPIRIT_X3_CLASSIFY(mark)
245         BOOST_SPIRIT_X3_CLASSIFY(number)
246         BOOST_SPIRIT_X3_CLASSIFY(separator)
247         BOOST_SPIRIT_X3_CLASSIFY(other)
248         BOOST_SPIRIT_X3_CLASSIFY(punctuation)
249         BOOST_SPIRIT_X3_CLASSIFY(symbol)
250
251     ///////////////////////////////////////////////////////////////////////////
252     //  Unicode General Categories
253     ///////////////////////////////////////////////////////////////////////////
254         BOOST_SPIRIT_X3_CLASSIFY(uppercase_letter)
255         BOOST_SPIRIT_X3_CLASSIFY(lowercase_letter)
256         BOOST_SPIRIT_X3_CLASSIFY(titlecase_letter)
257         BOOST_SPIRIT_X3_CLASSIFY(modifier_letter)
258         BOOST_SPIRIT_X3_CLASSIFY(other_letter)
259
260         BOOST_SPIRIT_X3_CLASSIFY(nonspacing_mark)
261         BOOST_SPIRIT_X3_CLASSIFY(enclosing_mark)
262         BOOST_SPIRIT_X3_CLASSIFY(spacing_mark)
263
264         BOOST_SPIRIT_X3_CLASSIFY(decimal_number)
265         BOOST_SPIRIT_X3_CLASSIFY(letter_number)
266         BOOST_SPIRIT_X3_CLASSIFY(other_number)
267
268         BOOST_SPIRIT_X3_CLASSIFY(space_separator)
269         BOOST_SPIRIT_X3_CLASSIFY(line_separator)
270         BOOST_SPIRIT_X3_CLASSIFY(paragraph_separator)
271
272         BOOST_SPIRIT_X3_CLASSIFY(control)
273         BOOST_SPIRIT_X3_CLASSIFY(format)
274         BOOST_SPIRIT_X3_CLASSIFY(private_use)
275         BOOST_SPIRIT_X3_CLASSIFY(surrogate)
276         BOOST_SPIRIT_X3_CLASSIFY(unassigned)
277
278         BOOST_SPIRIT_X3_CLASSIFY(dash_punctuation)
279         BOOST_SPIRIT_X3_CLASSIFY(open_punctuation)
280         BOOST_SPIRIT_X3_CLASSIFY(close_punctuation)
281         BOOST_SPIRIT_X3_CLASSIFY(connector_punctuation)
282         BOOST_SPIRIT_X3_CLASSIFY(other_punctuation)
283         BOOST_SPIRIT_X3_CLASSIFY(initial_punctuation)
284         BOOST_SPIRIT_X3_CLASSIFY(final_punctuation)
285
286         BOOST_SPIRIT_X3_CLASSIFY(math_symbol)
287         BOOST_SPIRIT_X3_CLASSIFY(currency_symbol)
288         BOOST_SPIRIT_X3_CLASSIFY(modifier_symbol)
289         BOOST_SPIRIT_X3_CLASSIFY(other_symbol)
290
291     ///////////////////////////////////////////////////////////////////////////
292     //  Unicode Derived Categories
293     ///////////////////////////////////////////////////////////////////////////
294         BOOST_SPIRIT_X3_CLASSIFY(alphabetic)
295         BOOST_SPIRIT_X3_CLASSIFY(uppercase)
296         BOOST_SPIRIT_X3_CLASSIFY(lowercase)
297         BOOST_SPIRIT_X3_CLASSIFY(white_space)
298         BOOST_SPIRIT_X3_CLASSIFY(hex_digit)
299         BOOST_SPIRIT_X3_CLASSIFY(noncharacter_code_point)
300         BOOST_SPIRIT_X3_CLASSIFY(default_ignorable_code_point)
301
302     ///////////////////////////////////////////////////////////////////////////
303     //  Unicode Scripts
304     ///////////////////////////////////////////////////////////////////////////
305         BOOST_SPIRIT_X3_CLASSIFY(arabic)
306         BOOST_SPIRIT_X3_CLASSIFY(imperial_aramaic)
307         BOOST_SPIRIT_X3_CLASSIFY(armenian)
308         BOOST_SPIRIT_X3_CLASSIFY(avestan)
309         BOOST_SPIRIT_X3_CLASSIFY(balinese)
310         BOOST_SPIRIT_X3_CLASSIFY(bamum)
311         BOOST_SPIRIT_X3_CLASSIFY(bengali)
312         BOOST_SPIRIT_X3_CLASSIFY(bopomofo)
313         BOOST_SPIRIT_X3_CLASSIFY(braille)
314         BOOST_SPIRIT_X3_CLASSIFY(buginese)
315         BOOST_SPIRIT_X3_CLASSIFY(buhid)
316         BOOST_SPIRIT_X3_CLASSIFY(canadian_aboriginal)
317         BOOST_SPIRIT_X3_CLASSIFY(carian)
318         BOOST_SPIRIT_X3_CLASSIFY(cham)
319         BOOST_SPIRIT_X3_CLASSIFY(cherokee)
320         BOOST_SPIRIT_X3_CLASSIFY(coptic)
321         BOOST_SPIRIT_X3_CLASSIFY(cypriot)
322         BOOST_SPIRIT_X3_CLASSIFY(cyrillic)
323         BOOST_SPIRIT_X3_CLASSIFY(devanagari)
324         BOOST_SPIRIT_X3_CLASSIFY(deseret)
325         BOOST_SPIRIT_X3_CLASSIFY(egyptian_hieroglyphs)
326         BOOST_SPIRIT_X3_CLASSIFY(ethiopic)
327         BOOST_SPIRIT_X3_CLASSIFY(georgian)
328         BOOST_SPIRIT_X3_CLASSIFY(glagolitic)
329         BOOST_SPIRIT_X3_CLASSIFY(gothic)
330         BOOST_SPIRIT_X3_CLASSIFY(greek)
331         BOOST_SPIRIT_X3_CLASSIFY(gujarati)
332         BOOST_SPIRIT_X3_CLASSIFY(gurmukhi)
333         BOOST_SPIRIT_X3_CLASSIFY(hangul)
334         BOOST_SPIRIT_X3_CLASSIFY(han)
335         BOOST_SPIRIT_X3_CLASSIFY(hanunoo)
336         BOOST_SPIRIT_X3_CLASSIFY(hebrew)
337         BOOST_SPIRIT_X3_CLASSIFY(hiragana)
338         BOOST_SPIRIT_X3_CLASSIFY(katakana_or_hiragana)
339         BOOST_SPIRIT_X3_CLASSIFY(old_italic)
340         BOOST_SPIRIT_X3_CLASSIFY(javanese)
341         BOOST_SPIRIT_X3_CLASSIFY(kayah_li)
342         BOOST_SPIRIT_X3_CLASSIFY(katakana)
343         BOOST_SPIRIT_X3_CLASSIFY(kharoshthi)
344         BOOST_SPIRIT_X3_CLASSIFY(khmer)
345         BOOST_SPIRIT_X3_CLASSIFY(kannada)
346         BOOST_SPIRIT_X3_CLASSIFY(kaithi)
347         BOOST_SPIRIT_X3_CLASSIFY(tai_tham)
348         BOOST_SPIRIT_X3_CLASSIFY(lao)
349         BOOST_SPIRIT_X3_CLASSIFY(latin)
350         BOOST_SPIRIT_X3_CLASSIFY(lepcha)
351         BOOST_SPIRIT_X3_CLASSIFY(limbu)
352         BOOST_SPIRIT_X3_CLASSIFY(linear_b)
353         BOOST_SPIRIT_X3_CLASSIFY(lisu)
354         BOOST_SPIRIT_X3_CLASSIFY(lycian)
355         BOOST_SPIRIT_X3_CLASSIFY(lydian)
356         BOOST_SPIRIT_X3_CLASSIFY(malayalam)
357         BOOST_SPIRIT_X3_CLASSIFY(mongolian)
358         BOOST_SPIRIT_X3_CLASSIFY(meetei_mayek)
359         BOOST_SPIRIT_X3_CLASSIFY(myanmar)
360         BOOST_SPIRIT_X3_CLASSIFY(nko)
361         BOOST_SPIRIT_X3_CLASSIFY(ogham)
362         BOOST_SPIRIT_X3_CLASSIFY(ol_chiki)
363         BOOST_SPIRIT_X3_CLASSIFY(old_turkic)
364         BOOST_SPIRIT_X3_CLASSIFY(oriya)
365         BOOST_SPIRIT_X3_CLASSIFY(osmanya)
366         BOOST_SPIRIT_X3_CLASSIFY(phags_pa)
367         BOOST_SPIRIT_X3_CLASSIFY(inscriptional_pahlavi)
368         BOOST_SPIRIT_X3_CLASSIFY(phoenician)
369         BOOST_SPIRIT_X3_CLASSIFY(inscriptional_parthian)
370         BOOST_SPIRIT_X3_CLASSIFY(rejang)
371         BOOST_SPIRIT_X3_CLASSIFY(runic)
372         BOOST_SPIRIT_X3_CLASSIFY(samaritan)
373         BOOST_SPIRIT_X3_CLASSIFY(old_south_arabian)
374         BOOST_SPIRIT_X3_CLASSIFY(saurashtra)
375         BOOST_SPIRIT_X3_CLASSIFY(shavian)
376         BOOST_SPIRIT_X3_CLASSIFY(sinhala)
377         BOOST_SPIRIT_X3_CLASSIFY(sundanese)
378         BOOST_SPIRIT_X3_CLASSIFY(syloti_nagri)
379         BOOST_SPIRIT_X3_CLASSIFY(syriac)
380         BOOST_SPIRIT_X3_CLASSIFY(tagbanwa)
381         BOOST_SPIRIT_X3_CLASSIFY(tai_le)
382         BOOST_SPIRIT_X3_CLASSIFY(new_tai_lue)
383         BOOST_SPIRIT_X3_CLASSIFY(tamil)
384         BOOST_SPIRIT_X3_CLASSIFY(tai_viet)
385         BOOST_SPIRIT_X3_CLASSIFY(telugu)
386         BOOST_SPIRIT_X3_CLASSIFY(tifinagh)
387         BOOST_SPIRIT_X3_CLASSIFY(tagalog)
388         BOOST_SPIRIT_X3_CLASSIFY(thaana)
389         BOOST_SPIRIT_X3_CLASSIFY(thai)
390         BOOST_SPIRIT_X3_CLASSIFY(tibetan)
391         BOOST_SPIRIT_X3_CLASSIFY(ugaritic)
392         BOOST_SPIRIT_X3_CLASSIFY(vai)
393         BOOST_SPIRIT_X3_CLASSIFY(old_persian)
394         BOOST_SPIRIT_X3_CLASSIFY(cuneiform)
395         BOOST_SPIRIT_X3_CLASSIFY(yi)
396         BOOST_SPIRIT_X3_CLASSIFY(inherited)
397         BOOST_SPIRIT_X3_CLASSIFY(common)
398         BOOST_SPIRIT_X3_CLASSIFY(unknown)
399
400 #undef BOOST_SPIRIT_X3_BASIC_CLASSIFY
401 #undef BOOST_SPIRIT_X3_CLASSIFY
402     };
403
404     template <typename Tag>
405     struct unicode_char_class
406       : char_parser<unicode_char_class<Tag>>
407     {
408         typedef char_encoding::unicode encoding;
409         typedef Tag tag;
410         typedef typename encoding::char_type char_type;
411         typedef char_type attribute_type;
412         static bool const has_attribute = true;
413
414         template <typename Char, typename Context>
415         bool test(Char ch, Context const&) const
416         {
417             return encoding::ischar(ch) && unicode_char_class_base::is(tag(), ch);
418         }
419     };
420
421 #define BOOST_SPIRIT_X3_CHAR_CLASS(name)                                         \
422     typedef unicode_char_class<name##_tag> name##_type;                          \
423     name##_type const name = name##_type();                                      \
424     /***/
425
426     namespace unicode
427     {
428         typedef any_char<char_encoding::unicode> char_type;
429         auto const char_ = char_type{};
430
431     ///////////////////////////////////////////////////////////////////////////
432     //  Unicode Major Categories
433     ///////////////////////////////////////////////////////////////////////////
434         BOOST_SPIRIT_X3_CHAR_CLASS(alnum)
435         BOOST_SPIRIT_X3_CHAR_CLASS(alpha)
436         BOOST_SPIRIT_X3_CHAR_CLASS(digit)
437         BOOST_SPIRIT_X3_CHAR_CLASS(xdigit)
438         BOOST_SPIRIT_X3_CHAR_CLASS(cntrl)
439         BOOST_SPIRIT_X3_CHAR_CLASS(graph)
440         BOOST_SPIRIT_X3_CHAR_CLASS(lower)
441         BOOST_SPIRIT_X3_CHAR_CLASS(print)
442         BOOST_SPIRIT_X3_CHAR_CLASS(punct)
443         BOOST_SPIRIT_X3_CHAR_CLASS(space)
444         BOOST_SPIRIT_X3_CHAR_CLASS(blank)
445         BOOST_SPIRIT_X3_CHAR_CLASS(upper)
446
447     ///////////////////////////////////////////////////////////////////////////
448     //  Unicode Major Categories
449     ///////////////////////////////////////////////////////////////////////////
450         BOOST_SPIRIT_X3_CHAR_CLASS(letter)
451         BOOST_SPIRIT_X3_CHAR_CLASS(mark)
452         BOOST_SPIRIT_X3_CHAR_CLASS(number)
453         BOOST_SPIRIT_X3_CHAR_CLASS(separator)
454         BOOST_SPIRIT_X3_CHAR_CLASS(other)
455         BOOST_SPIRIT_X3_CHAR_CLASS(punctuation)
456         BOOST_SPIRIT_X3_CHAR_CLASS(symbol)
457
458     ///////////////////////////////////////////////////////////////////////////
459     //  Unicode General Categories
460     ///////////////////////////////////////////////////////////////////////////
461         BOOST_SPIRIT_X3_CHAR_CLASS(uppercase_letter)
462         BOOST_SPIRIT_X3_CHAR_CLASS(lowercase_letter)
463         BOOST_SPIRIT_X3_CHAR_CLASS(titlecase_letter)
464         BOOST_SPIRIT_X3_CHAR_CLASS(modifier_letter)
465         BOOST_SPIRIT_X3_CHAR_CLASS(other_letter)
466
467         BOOST_SPIRIT_X3_CHAR_CLASS(nonspacing_mark)
468         BOOST_SPIRIT_X3_CHAR_CLASS(enclosing_mark)
469         BOOST_SPIRIT_X3_CHAR_CLASS(spacing_mark)
470
471         BOOST_SPIRIT_X3_CHAR_CLASS(decimal_number)
472         BOOST_SPIRIT_X3_CHAR_CLASS(letter_number)
473         BOOST_SPIRIT_X3_CHAR_CLASS(other_number)
474
475         BOOST_SPIRIT_X3_CHAR_CLASS(space_separator)
476         BOOST_SPIRIT_X3_CHAR_CLASS(line_separator)
477         BOOST_SPIRIT_X3_CHAR_CLASS(paragraph_separator)
478
479         BOOST_SPIRIT_X3_CHAR_CLASS(control)
480         BOOST_SPIRIT_X3_CHAR_CLASS(format)
481         BOOST_SPIRIT_X3_CHAR_CLASS(private_use)
482         BOOST_SPIRIT_X3_CHAR_CLASS(surrogate)
483         BOOST_SPIRIT_X3_CHAR_CLASS(unassigned)
484
485         BOOST_SPIRIT_X3_CHAR_CLASS(dash_punctuation)
486         BOOST_SPIRIT_X3_CHAR_CLASS(open_punctuation)
487         BOOST_SPIRIT_X3_CHAR_CLASS(close_punctuation)
488         BOOST_SPIRIT_X3_CHAR_CLASS(connector_punctuation)
489         BOOST_SPIRIT_X3_CHAR_CLASS(other_punctuation)
490         BOOST_SPIRIT_X3_CHAR_CLASS(initial_punctuation)
491         BOOST_SPIRIT_X3_CHAR_CLASS(final_punctuation)
492
493         BOOST_SPIRIT_X3_CHAR_CLASS(math_symbol)
494         BOOST_SPIRIT_X3_CHAR_CLASS(currency_symbol)
495         BOOST_SPIRIT_X3_CHAR_CLASS(modifier_symbol)
496         BOOST_SPIRIT_X3_CHAR_CLASS(other_symbol)
497
498     ///////////////////////////////////////////////////////////////////////////
499     //  Unicode Derived Categories
500     ///////////////////////////////////////////////////////////////////////////
501         BOOST_SPIRIT_X3_CHAR_CLASS(alphabetic)
502         BOOST_SPIRIT_X3_CHAR_CLASS(uppercase)
503         BOOST_SPIRIT_X3_CHAR_CLASS(lowercase)
504         BOOST_SPIRIT_X3_CHAR_CLASS(white_space)
505         BOOST_SPIRIT_X3_CHAR_CLASS(hex_digit)
506         BOOST_SPIRIT_X3_CHAR_CLASS(noncharacter_code_point)
507         BOOST_SPIRIT_X3_CHAR_CLASS(default_ignorable_code_point)
508
509     ///////////////////////////////////////////////////////////////////////////
510     //  Unicode Scripts
511     ///////////////////////////////////////////////////////////////////////////
512         BOOST_SPIRIT_X3_CHAR_CLASS(arabic)
513         BOOST_SPIRIT_X3_CHAR_CLASS(imperial_aramaic)
514         BOOST_SPIRIT_X3_CHAR_CLASS(armenian)
515         BOOST_SPIRIT_X3_CHAR_CLASS(avestan)
516         BOOST_SPIRIT_X3_CHAR_CLASS(balinese)
517         BOOST_SPIRIT_X3_CHAR_CLASS(bamum)
518         BOOST_SPIRIT_X3_CHAR_CLASS(bengali)
519         BOOST_SPIRIT_X3_CHAR_CLASS(bopomofo)
520         BOOST_SPIRIT_X3_CHAR_CLASS(braille)
521         BOOST_SPIRIT_X3_CHAR_CLASS(buginese)
522         BOOST_SPIRIT_X3_CHAR_CLASS(buhid)
523         BOOST_SPIRIT_X3_CHAR_CLASS(canadian_aboriginal)
524         BOOST_SPIRIT_X3_CHAR_CLASS(carian)
525         BOOST_SPIRIT_X3_CHAR_CLASS(cham)
526         BOOST_SPIRIT_X3_CHAR_CLASS(cherokee)
527         BOOST_SPIRIT_X3_CHAR_CLASS(coptic)
528         BOOST_SPIRIT_X3_CHAR_CLASS(cypriot)
529         BOOST_SPIRIT_X3_CHAR_CLASS(cyrillic)
530         BOOST_SPIRIT_X3_CHAR_CLASS(devanagari)
531         BOOST_SPIRIT_X3_CHAR_CLASS(deseret)
532         BOOST_SPIRIT_X3_CHAR_CLASS(egyptian_hieroglyphs)
533         BOOST_SPIRIT_X3_CHAR_CLASS(ethiopic)
534         BOOST_SPIRIT_X3_CHAR_CLASS(georgian)
535         BOOST_SPIRIT_X3_CHAR_CLASS(glagolitic)
536         BOOST_SPIRIT_X3_CHAR_CLASS(gothic)
537         BOOST_SPIRIT_X3_CHAR_CLASS(greek)
538         BOOST_SPIRIT_X3_CHAR_CLASS(gujarati)
539         BOOST_SPIRIT_X3_CHAR_CLASS(gurmukhi)
540         BOOST_SPIRIT_X3_CHAR_CLASS(hangul)
541         BOOST_SPIRIT_X3_CHAR_CLASS(han)
542         BOOST_SPIRIT_X3_CHAR_CLASS(hanunoo)
543         BOOST_SPIRIT_X3_CHAR_CLASS(hebrew)
544         BOOST_SPIRIT_X3_CHAR_CLASS(hiragana)
545         BOOST_SPIRIT_X3_CHAR_CLASS(katakana_or_hiragana)
546         BOOST_SPIRIT_X3_CHAR_CLASS(old_italic)
547         BOOST_SPIRIT_X3_CHAR_CLASS(javanese)
548         BOOST_SPIRIT_X3_CHAR_CLASS(kayah_li)
549         BOOST_SPIRIT_X3_CHAR_CLASS(katakana)
550         BOOST_SPIRIT_X3_CHAR_CLASS(kharoshthi)
551         BOOST_SPIRIT_X3_CHAR_CLASS(khmer)
552         BOOST_SPIRIT_X3_CHAR_CLASS(kannada)
553         BOOST_SPIRIT_X3_CHAR_CLASS(kaithi)
554         BOOST_SPIRIT_X3_CHAR_CLASS(tai_tham)
555         BOOST_SPIRIT_X3_CHAR_CLASS(lao)
556         BOOST_SPIRIT_X3_CHAR_CLASS(latin)
557         BOOST_SPIRIT_X3_CHAR_CLASS(lepcha)
558         BOOST_SPIRIT_X3_CHAR_CLASS(limbu)
559         BOOST_SPIRIT_X3_CHAR_CLASS(linear_b)
560         BOOST_SPIRIT_X3_CHAR_CLASS(lisu)
561         BOOST_SPIRIT_X3_CHAR_CLASS(lycian)
562         BOOST_SPIRIT_X3_CHAR_CLASS(lydian)
563         BOOST_SPIRIT_X3_CHAR_CLASS(malayalam)
564         BOOST_SPIRIT_X3_CHAR_CLASS(mongolian)
565         BOOST_SPIRIT_X3_CHAR_CLASS(meetei_mayek)
566         BOOST_SPIRIT_X3_CHAR_CLASS(myanmar)
567         BOOST_SPIRIT_X3_CHAR_CLASS(nko)
568         BOOST_SPIRIT_X3_CHAR_CLASS(ogham)
569         BOOST_SPIRIT_X3_CHAR_CLASS(ol_chiki)
570         BOOST_SPIRIT_X3_CHAR_CLASS(old_turkic)
571         BOOST_SPIRIT_X3_CHAR_CLASS(oriya)
572         BOOST_SPIRIT_X3_CHAR_CLASS(osmanya)
573         BOOST_SPIRIT_X3_CHAR_CLASS(phags_pa)
574         BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_pahlavi)
575         BOOST_SPIRIT_X3_CHAR_CLASS(phoenician)
576         BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_parthian)
577         BOOST_SPIRIT_X3_CHAR_CLASS(rejang)
578         BOOST_SPIRIT_X3_CHAR_CLASS(runic)
579         BOOST_SPIRIT_X3_CHAR_CLASS(samaritan)
580         BOOST_SPIRIT_X3_CHAR_CLASS(old_south_arabian)
581         BOOST_SPIRIT_X3_CHAR_CLASS(saurashtra)
582         BOOST_SPIRIT_X3_CHAR_CLASS(shavian)
583         BOOST_SPIRIT_X3_CHAR_CLASS(sinhala)
584         BOOST_SPIRIT_X3_CHAR_CLASS(sundanese)
585         BOOST_SPIRIT_X3_CHAR_CLASS(syloti_nagri)
586         BOOST_SPIRIT_X3_CHAR_CLASS(syriac)
587         BOOST_SPIRIT_X3_CHAR_CLASS(tagbanwa)
588         BOOST_SPIRIT_X3_CHAR_CLASS(tai_le)
589         BOOST_SPIRIT_X3_CHAR_CLASS(new_tai_lue)
590         BOOST_SPIRIT_X3_CHAR_CLASS(tamil)
591         BOOST_SPIRIT_X3_CHAR_CLASS(tai_viet)
592         BOOST_SPIRIT_X3_CHAR_CLASS(telugu)
593         BOOST_SPIRIT_X3_CHAR_CLASS(tifinagh)
594         BOOST_SPIRIT_X3_CHAR_CLASS(tagalog)
595         BOOST_SPIRIT_X3_CHAR_CLASS(thaana)
596         BOOST_SPIRIT_X3_CHAR_CLASS(thai)
597         BOOST_SPIRIT_X3_CHAR_CLASS(tibetan)
598         BOOST_SPIRIT_X3_CHAR_CLASS(ugaritic)
599         BOOST_SPIRIT_X3_CHAR_CLASS(vai)
600         BOOST_SPIRIT_X3_CHAR_CLASS(old_persian)
601         BOOST_SPIRIT_X3_CHAR_CLASS(cuneiform)
602         BOOST_SPIRIT_X3_CHAR_CLASS(yi)
603         BOOST_SPIRIT_X3_CHAR_CLASS(inherited)
604         BOOST_SPIRIT_X3_CHAR_CLASS(common)
605         BOOST_SPIRIT_X3_CHAR_CLASS(unknown)
606     }
607
608 #undef BOOST_SPIRIT_X3_CHAR_CLASS
609
610 }}}
611
612 #endif