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
15namespace 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 adlam_tag {};
100 struct caucasian_albanian_tag {};
101 struct ahom_tag {};
102 struct arabic_tag {};
103 struct imperial_aramaic_tag {};
104 struct armenian_tag {};
105 struct avestan_tag {};
106 struct balinese_tag {};
107 struct bamum_tag {};
108 struct bassa_vah_tag {};
109 struct batak_tag {};
110 struct bengali_tag {};
111 struct bhaiksuki_tag {};
112 struct bopomofo_tag {};
113 struct brahmi_tag {};
114 struct braille_tag {};
115 struct buginese_tag {};
116 struct buhid_tag {};
117 struct chakma_tag {};
118 struct canadian_aboriginal_tag {};
119 struct carian_tag {};
120 struct cham_tag {};
121 struct cherokee_tag {};
122 struct chorasmian_tag {};
123 struct coptic_tag {};
124 struct cypro_minoan_tag {};
125 struct cypriot_tag {};
126 struct cyrillic_tag {};
127 struct devanagari_tag {};
128 struct dives_akuru_tag {};
129 struct dogra_tag {};
130 struct deseret_tag {};
131 struct duployan_tag {};
132 struct egyptian_hieroglyphs_tag {};
133 struct elbasan_tag {};
134 struct elymaic_tag {};
135 struct ethiopic_tag {};
136 struct georgian_tag {};
137 struct glagolitic_tag {};
138 struct gunjala_gondi_tag {};
139 struct masaram_gondi_tag {};
140 struct gothic_tag {};
141 struct grantha_tag {};
142 struct greek_tag {};
143 struct gujarati_tag {};
144 struct gurmukhi_tag {};
145 struct hangul_tag {};
146 struct han_tag {};
147 struct hanunoo_tag {};
148 struct hatran_tag {};
149 struct hebrew_tag {};
150 struct hiragana_tag {};
151 struct anatolian_hieroglyphs_tag {};
152 struct pahawh_hmong_tag {};
153 struct nyiakeng_puachue_hmong_tag {};
154 struct katakana_or_hiragana_tag {};
155 struct old_hungarian_tag {};
156 struct old_italic_tag {};
157 struct javanese_tag {};
158 struct kayah_li_tag {};
159 struct katakana_tag {};
160 struct kawi_tag {};
161 struct kharoshthi_tag {};
162 struct khmer_tag {};
163 struct khojki_tag {};
164 struct khitan_small_script_tag {};
165 struct kannada_tag {};
166 struct kaithi_tag {};
167 struct tai_tham_tag {};
168 struct lao_tag {};
169 struct latin_tag {};
170 struct lepcha_tag {};
171 struct limbu_tag {};
172 struct linear_a_tag {};
173 struct linear_b_tag {};
174 struct lisu_tag {};
175 struct lycian_tag {};
176 struct lydian_tag {};
177 struct mahajani_tag {};
178 struct makasar_tag {};
179 struct mandaic_tag {};
180 struct manichaean_tag {};
181 struct marchen_tag {};
182 struct medefaidrin_tag {};
183 struct mende_kikakui_tag {};
184 struct meroitic_cursive_tag {};
185 struct meroitic_hieroglyphs_tag {};
186 struct malayalam_tag {};
187 struct modi_tag {};
188 struct mongolian_tag {};
189 struct mro_tag {};
190 struct meetei_mayek_tag {};
191 struct multani_tag {};
192 struct myanmar_tag {};
193 struct nag_mundari_tag {};
194 struct nandinagari_tag {};
195 struct old_north_arabian_tag {};
196 struct nabataean_tag {};
197 struct newa_tag {};
198 struct nko_tag {};
199 struct nushu_tag {};
200 struct ogham_tag {};
201 struct ol_chiki_tag {};
202 struct old_turkic_tag {};
203 struct oriya_tag {};
204 struct osage_tag {};
205 struct osmanya_tag {};
206 struct old_uyghur_tag {};
207 struct palmyrene_tag {};
208 struct pau_cin_hau_tag {};
209 struct old_permic_tag {};
210 struct phags_pa_tag {};
211 struct inscriptional_pahlavi_tag {};
212 struct psalter_pahlavi_tag {};
213 struct phoenician_tag {};
214 struct miao_tag {};
215 struct inscriptional_parthian_tag {};
216 struct rejang_tag {};
217 struct hanifi_rohingya_tag {};
218 struct runic_tag {};
219 struct samaritan_tag {};
220 struct old_south_arabian_tag {};
221 struct saurashtra_tag {};
222 struct signwriting_tag {};
223 struct shavian_tag {};
224 struct sharada_tag {};
225 struct siddham_tag {};
226 struct khudawadi_tag {};
227 struct sinhala_tag {};
228 struct sogdian_tag {};
229 struct old_sogdian_tag {};
230 struct sora_sompeng_tag {};
231 struct soyombo_tag {};
232 struct sundanese_tag {};
233 struct syloti_nagri_tag {};
234 struct syriac_tag {};
235 struct tagbanwa_tag {};
236 struct takri_tag {};
237 struct tai_le_tag {};
238 struct new_tai_lue_tag {};
239 struct tamil_tag {};
240 struct tangut_tag {};
241 struct tai_viet_tag {};
242 struct telugu_tag {};
243 struct tifinagh_tag {};
244 struct tagalog_tag {};
245 struct thaana_tag {};
246 struct thai_tag {};
247 struct tibetan_tag {};
248 struct tirhuta_tag {};
249 struct tangsa_tag {};
250 struct toto_tag {};
251 struct ugaritic_tag {};
252 struct vai_tag {};
253 struct vithkuqi_tag {};
254 struct warang_citi_tag {};
255 struct wancho_tag {};
256 struct old_persian_tag {};
257 struct cuneiform_tag {};
258 struct yezidi_tag {};
259 struct yi_tag {};
260 struct zanabazar_square_tag {};
261 struct inherited_tag {};
262 struct common_tag {};
263 struct unknown_tag {};
264
265 ///////////////////////////////////////////////////////////////////////////
266 struct unicode_char_class_base
267 {
268 typedef char_encoding::unicode encoding;
269 typedef char_encoding::unicode::char_type char_type;
270
271#define BOOST_SPIRIT_X3_BASIC_CLASSIFY(name) \
272 template <typename Char> \
273 static bool \
274 is(name##_tag, Char ch) \
275 { \
276 return encoding::is ##name \
277 BOOST_PREVENT_MACRO_SUBSTITUTION \
278 (detail::cast_char<char_type>(ch)); \
279 } \
280 /***/
281
282#define BOOST_SPIRIT_X3_CLASSIFY(name) \
283 template <typename Char> \
284 static bool \
285 is(name##_tag, Char ch) \
286 { \
287 return encoding::is_##name \
288 BOOST_PREVENT_MACRO_SUBSTITUTION \
289 (detail::cast_char<char_type>(ch)); \
290 } \
291 /***/
292
293
294 ///////////////////////////////////////////////////////////////////////////
295 // Unicode Major Categories
296 ///////////////////////////////////////////////////////////////////////////
297 BOOST_SPIRIT_X3_BASIC_CLASSIFY(char)
298 BOOST_SPIRIT_X3_BASIC_CLASSIFY(alnum)
299 BOOST_SPIRIT_X3_BASIC_CLASSIFY(alpha)
300 BOOST_SPIRIT_X3_BASIC_CLASSIFY(digit)
301 BOOST_SPIRIT_X3_BASIC_CLASSIFY(xdigit)
302 BOOST_SPIRIT_X3_BASIC_CLASSIFY(cntrl)
303 BOOST_SPIRIT_X3_BASIC_CLASSIFY(graph)
304 BOOST_SPIRIT_X3_BASIC_CLASSIFY(lower)
305 BOOST_SPIRIT_X3_BASIC_CLASSIFY(print)
306 BOOST_SPIRIT_X3_BASIC_CLASSIFY(punct)
307 BOOST_SPIRIT_X3_BASIC_CLASSIFY(space)
308 BOOST_SPIRIT_X3_BASIC_CLASSIFY(blank)
309 BOOST_SPIRIT_X3_BASIC_CLASSIFY(upper)
310
311 ///////////////////////////////////////////////////////////////////////////
312 // Unicode Major Categories
313 ///////////////////////////////////////////////////////////////////////////
314 BOOST_SPIRIT_X3_CLASSIFY(letter)
315 BOOST_SPIRIT_X3_CLASSIFY(mark)
316 BOOST_SPIRIT_X3_CLASSIFY(number)
317 BOOST_SPIRIT_X3_CLASSIFY(separator)
318 BOOST_SPIRIT_X3_CLASSIFY(other)
319 BOOST_SPIRIT_X3_CLASSIFY(punctuation)
320 BOOST_SPIRIT_X3_CLASSIFY(symbol)
321
322 ///////////////////////////////////////////////////////////////////////////
323 // Unicode General Categories
324 ///////////////////////////////////////////////////////////////////////////
325 BOOST_SPIRIT_X3_CLASSIFY(uppercase_letter)
326 BOOST_SPIRIT_X3_CLASSIFY(lowercase_letter)
327 BOOST_SPIRIT_X3_CLASSIFY(titlecase_letter)
328 BOOST_SPIRIT_X3_CLASSIFY(modifier_letter)
329 BOOST_SPIRIT_X3_CLASSIFY(other_letter)
330
331 BOOST_SPIRIT_X3_CLASSIFY(nonspacing_mark)
332 BOOST_SPIRIT_X3_CLASSIFY(enclosing_mark)
333 BOOST_SPIRIT_X3_CLASSIFY(spacing_mark)
334
335 BOOST_SPIRIT_X3_CLASSIFY(decimal_number)
336 BOOST_SPIRIT_X3_CLASSIFY(letter_number)
337 BOOST_SPIRIT_X3_CLASSIFY(other_number)
338
339 BOOST_SPIRIT_X3_CLASSIFY(space_separator)
340 BOOST_SPIRIT_X3_CLASSIFY(line_separator)
341 BOOST_SPIRIT_X3_CLASSIFY(paragraph_separator)
342
343 BOOST_SPIRIT_X3_CLASSIFY(control)
344 BOOST_SPIRIT_X3_CLASSIFY(format)
345 BOOST_SPIRIT_X3_CLASSIFY(private_use)
346 BOOST_SPIRIT_X3_CLASSIFY(surrogate)
347 BOOST_SPIRIT_X3_CLASSIFY(unassigned)
348
349 BOOST_SPIRIT_X3_CLASSIFY(dash_punctuation)
350 BOOST_SPIRIT_X3_CLASSIFY(open_punctuation)
351 BOOST_SPIRIT_X3_CLASSIFY(close_punctuation)
352 BOOST_SPIRIT_X3_CLASSIFY(connector_punctuation)
353 BOOST_SPIRIT_X3_CLASSIFY(other_punctuation)
354 BOOST_SPIRIT_X3_CLASSIFY(initial_punctuation)
355 BOOST_SPIRIT_X3_CLASSIFY(final_punctuation)
356
357 BOOST_SPIRIT_X3_CLASSIFY(math_symbol)
358 BOOST_SPIRIT_X3_CLASSIFY(currency_symbol)
359 BOOST_SPIRIT_X3_CLASSIFY(modifier_symbol)
360 BOOST_SPIRIT_X3_CLASSIFY(other_symbol)
361
362 ///////////////////////////////////////////////////////////////////////////
363 // Unicode Derived Categories
364 ///////////////////////////////////////////////////////////////////////////
365 BOOST_SPIRIT_X3_CLASSIFY(alphabetic)
366 BOOST_SPIRIT_X3_CLASSIFY(uppercase)
367 BOOST_SPIRIT_X3_CLASSIFY(lowercase)
368 BOOST_SPIRIT_X3_CLASSIFY(white_space)
369 BOOST_SPIRIT_X3_CLASSIFY(hex_digit)
370 BOOST_SPIRIT_X3_CLASSIFY(noncharacter_code_point)
371 BOOST_SPIRIT_X3_CLASSIFY(default_ignorable_code_point)
372
373 ///////////////////////////////////////////////////////////////////////////
374 // Unicode Scripts
375 ///////////////////////////////////////////////////////////////////////////
376 BOOST_SPIRIT_X3_CLASSIFY(adlam)
377 BOOST_SPIRIT_X3_CLASSIFY(caucasian_albanian)
378 BOOST_SPIRIT_X3_CLASSIFY(ahom)
379 BOOST_SPIRIT_X3_CLASSIFY(arabic)
380 BOOST_SPIRIT_X3_CLASSIFY(imperial_aramaic)
381 BOOST_SPIRIT_X3_CLASSIFY(armenian)
382 BOOST_SPIRIT_X3_CLASSIFY(avestan)
383 BOOST_SPIRIT_X3_CLASSIFY(balinese)
384 BOOST_SPIRIT_X3_CLASSIFY(bamum)
385 BOOST_SPIRIT_X3_CLASSIFY(bassa_vah)
386 BOOST_SPIRIT_X3_CLASSIFY(batak)
387 BOOST_SPIRIT_X3_CLASSIFY(bengali)
388 BOOST_SPIRIT_X3_CLASSIFY(bhaiksuki)
389 BOOST_SPIRIT_X3_CLASSIFY(bopomofo)
390 BOOST_SPIRIT_X3_CLASSIFY(brahmi)
391 BOOST_SPIRIT_X3_CLASSIFY(braille)
392 BOOST_SPIRIT_X3_CLASSIFY(buginese)
393 BOOST_SPIRIT_X3_CLASSIFY(buhid)
394 BOOST_SPIRIT_X3_CLASSIFY(chakma)
395 BOOST_SPIRIT_X3_CLASSIFY(canadian_aboriginal)
396 BOOST_SPIRIT_X3_CLASSIFY(carian)
397 BOOST_SPIRIT_X3_CLASSIFY(cham)
398 BOOST_SPIRIT_X3_CLASSIFY(cherokee)
399 BOOST_SPIRIT_X3_CLASSIFY(chorasmian)
400 BOOST_SPIRIT_X3_CLASSIFY(coptic)
401 BOOST_SPIRIT_X3_CLASSIFY(cypro_minoan)
402 BOOST_SPIRIT_X3_CLASSIFY(cypriot)
403 BOOST_SPIRIT_X3_CLASSIFY(cyrillic)
404 BOOST_SPIRIT_X3_CLASSIFY(devanagari)
405 BOOST_SPIRIT_X3_CLASSIFY(dives_akuru)
406 BOOST_SPIRIT_X3_CLASSIFY(dogra)
407 BOOST_SPIRIT_X3_CLASSIFY(deseret)
408 BOOST_SPIRIT_X3_CLASSIFY(duployan)
409 BOOST_SPIRIT_X3_CLASSIFY(egyptian_hieroglyphs)
410 BOOST_SPIRIT_X3_CLASSIFY(elbasan)
411 BOOST_SPIRIT_X3_CLASSIFY(elymaic)
412 BOOST_SPIRIT_X3_CLASSIFY(ethiopic)
413 BOOST_SPIRIT_X3_CLASSIFY(georgian)
414 BOOST_SPIRIT_X3_CLASSIFY(glagolitic)
415 BOOST_SPIRIT_X3_CLASSIFY(gunjala_gondi)
416 BOOST_SPIRIT_X3_CLASSIFY(masaram_gondi)
417 BOOST_SPIRIT_X3_CLASSIFY(gothic)
418 BOOST_SPIRIT_X3_CLASSIFY(grantha)
419 BOOST_SPIRIT_X3_CLASSIFY(greek)
420 BOOST_SPIRIT_X3_CLASSIFY(gujarati)
421 BOOST_SPIRIT_X3_CLASSIFY(gurmukhi)
422 BOOST_SPIRIT_X3_CLASSIFY(hangul)
423 BOOST_SPIRIT_X3_CLASSIFY(han)
424 BOOST_SPIRIT_X3_CLASSIFY(hanunoo)
425 BOOST_SPIRIT_X3_CLASSIFY(hatran)
426 BOOST_SPIRIT_X3_CLASSIFY(hebrew)
427 BOOST_SPIRIT_X3_CLASSIFY(hiragana)
428 BOOST_SPIRIT_X3_CLASSIFY(anatolian_hieroglyphs)
429 BOOST_SPIRIT_X3_CLASSIFY(pahawh_hmong)
430 BOOST_SPIRIT_X3_CLASSIFY(nyiakeng_puachue_hmong)
431 BOOST_SPIRIT_X3_CLASSIFY(katakana_or_hiragana)
432 BOOST_SPIRIT_X3_CLASSIFY(old_hungarian)
433 BOOST_SPIRIT_X3_CLASSIFY(old_italic)
434 BOOST_SPIRIT_X3_CLASSIFY(javanese)
435 BOOST_SPIRIT_X3_CLASSIFY(kayah_li)
436 BOOST_SPIRIT_X3_CLASSIFY(katakana)
437 BOOST_SPIRIT_X3_CLASSIFY(kawi)
438 BOOST_SPIRIT_X3_CLASSIFY(kharoshthi)
439 BOOST_SPIRIT_X3_CLASSIFY(khmer)
440 BOOST_SPIRIT_X3_CLASSIFY(khojki)
441 BOOST_SPIRIT_X3_CLASSIFY(khitan_small_script)
442 BOOST_SPIRIT_X3_CLASSIFY(kannada)
443 BOOST_SPIRIT_X3_CLASSIFY(kaithi)
444 BOOST_SPIRIT_X3_CLASSIFY(tai_tham)
445 BOOST_SPIRIT_X3_CLASSIFY(lao)
446 BOOST_SPIRIT_X3_CLASSIFY(latin)
447 BOOST_SPIRIT_X3_CLASSIFY(lepcha)
448 BOOST_SPIRIT_X3_CLASSIFY(limbu)
449 BOOST_SPIRIT_X3_CLASSIFY(linear_a)
450 BOOST_SPIRIT_X3_CLASSIFY(linear_b)
451 BOOST_SPIRIT_X3_CLASSIFY(lisu)
452 BOOST_SPIRIT_X3_CLASSIFY(lycian)
453 BOOST_SPIRIT_X3_CLASSIFY(lydian)
454 BOOST_SPIRIT_X3_CLASSIFY(mahajani)
455 BOOST_SPIRIT_X3_CLASSIFY(makasar)
456 BOOST_SPIRIT_X3_CLASSIFY(mandaic)
457 BOOST_SPIRIT_X3_CLASSIFY(manichaean)
458 BOOST_SPIRIT_X3_CLASSIFY(marchen)
459 BOOST_SPIRIT_X3_CLASSIFY(medefaidrin)
460 BOOST_SPIRIT_X3_CLASSIFY(mende_kikakui)
461 BOOST_SPIRIT_X3_CLASSIFY(meroitic_cursive)
462 BOOST_SPIRIT_X3_CLASSIFY(meroitic_hieroglyphs)
463 BOOST_SPIRIT_X3_CLASSIFY(malayalam)
464 BOOST_SPIRIT_X3_CLASSIFY(modi)
465 BOOST_SPIRIT_X3_CLASSIFY(mongolian)
466 BOOST_SPIRIT_X3_CLASSIFY(mro)
467 BOOST_SPIRIT_X3_CLASSIFY(meetei_mayek)
468 BOOST_SPIRIT_X3_CLASSIFY(multani)
469 BOOST_SPIRIT_X3_CLASSIFY(myanmar)
470 BOOST_SPIRIT_X3_CLASSIFY(nag_mundari)
471 BOOST_SPIRIT_X3_CLASSIFY(nandinagari)
472 BOOST_SPIRIT_X3_CLASSIFY(old_north_arabian)
473 BOOST_SPIRIT_X3_CLASSIFY(nabataean)
474 BOOST_SPIRIT_X3_CLASSIFY(newa)
475 BOOST_SPIRIT_X3_CLASSIFY(nko)
476 BOOST_SPIRIT_X3_CLASSIFY(nushu)
477 BOOST_SPIRIT_X3_CLASSIFY(ogham)
478 BOOST_SPIRIT_X3_CLASSIFY(ol_chiki)
479 BOOST_SPIRIT_X3_CLASSIFY(old_turkic)
480 BOOST_SPIRIT_X3_CLASSIFY(oriya)
481 BOOST_SPIRIT_X3_CLASSIFY(osage)
482 BOOST_SPIRIT_X3_CLASSIFY(osmanya)
483 BOOST_SPIRIT_X3_CLASSIFY(old_uyghur)
484 BOOST_SPIRIT_X3_CLASSIFY(palmyrene)
485 BOOST_SPIRIT_X3_CLASSIFY(pau_cin_hau)
486 BOOST_SPIRIT_X3_CLASSIFY(old_permic)
487 BOOST_SPIRIT_X3_CLASSIFY(phags_pa)
488 BOOST_SPIRIT_X3_CLASSIFY(inscriptional_pahlavi)
489 BOOST_SPIRIT_X3_CLASSIFY(psalter_pahlavi)
490 BOOST_SPIRIT_X3_CLASSIFY(phoenician)
491 BOOST_SPIRIT_X3_CLASSIFY(miao)
492 BOOST_SPIRIT_X3_CLASSIFY(inscriptional_parthian)
493 BOOST_SPIRIT_X3_CLASSIFY(rejang)
494 BOOST_SPIRIT_X3_CLASSIFY(hanifi_rohingya)
495 BOOST_SPIRIT_X3_CLASSIFY(runic)
496 BOOST_SPIRIT_X3_CLASSIFY(samaritan)
497 BOOST_SPIRIT_X3_CLASSIFY(old_south_arabian)
498 BOOST_SPIRIT_X3_CLASSIFY(saurashtra)
499 BOOST_SPIRIT_X3_CLASSIFY(signwriting)
500 BOOST_SPIRIT_X3_CLASSIFY(shavian)
501 BOOST_SPIRIT_X3_CLASSIFY(sharada)
502 BOOST_SPIRIT_X3_CLASSIFY(siddham)
503 BOOST_SPIRIT_X3_CLASSIFY(khudawadi)
504 BOOST_SPIRIT_X3_CLASSIFY(sinhala)
505 BOOST_SPIRIT_X3_CLASSIFY(sogdian)
506 BOOST_SPIRIT_X3_CLASSIFY(old_sogdian)
507 BOOST_SPIRIT_X3_CLASSIFY(sora_sompeng)
508 BOOST_SPIRIT_X3_CLASSIFY(soyombo)
509 BOOST_SPIRIT_X3_CLASSIFY(sundanese)
510 BOOST_SPIRIT_X3_CLASSIFY(syloti_nagri)
511 BOOST_SPIRIT_X3_CLASSIFY(syriac)
512 BOOST_SPIRIT_X3_CLASSIFY(tagbanwa)
513 BOOST_SPIRIT_X3_CLASSIFY(takri)
514 BOOST_SPIRIT_X3_CLASSIFY(tai_le)
515 BOOST_SPIRIT_X3_CLASSIFY(new_tai_lue)
516 BOOST_SPIRIT_X3_CLASSIFY(tamil)
517 BOOST_SPIRIT_X3_CLASSIFY(tangut)
518 BOOST_SPIRIT_X3_CLASSIFY(tai_viet)
519 BOOST_SPIRIT_X3_CLASSIFY(telugu)
520 BOOST_SPIRIT_X3_CLASSIFY(tifinagh)
521 BOOST_SPIRIT_X3_CLASSIFY(tagalog)
522 BOOST_SPIRIT_X3_CLASSIFY(thaana)
523 BOOST_SPIRIT_X3_CLASSIFY(thai)
524 BOOST_SPIRIT_X3_CLASSIFY(tibetan)
525 BOOST_SPIRIT_X3_CLASSIFY(tirhuta)
526 BOOST_SPIRIT_X3_CLASSIFY(tangsa)
527 BOOST_SPIRIT_X3_CLASSIFY(toto)
528 BOOST_SPIRIT_X3_CLASSIFY(ugaritic)
529 BOOST_SPIRIT_X3_CLASSIFY(vai)
530 BOOST_SPIRIT_X3_CLASSIFY(vithkuqi)
531 BOOST_SPIRIT_X3_CLASSIFY(warang_citi)
532 BOOST_SPIRIT_X3_CLASSIFY(wancho)
533 BOOST_SPIRIT_X3_CLASSIFY(old_persian)
534 BOOST_SPIRIT_X3_CLASSIFY(cuneiform)
535 BOOST_SPIRIT_X3_CLASSIFY(yezidi)
536 BOOST_SPIRIT_X3_CLASSIFY(yi)
537 BOOST_SPIRIT_X3_CLASSIFY(zanabazar_square)
538 BOOST_SPIRIT_X3_CLASSIFY(inherited)
539 BOOST_SPIRIT_X3_CLASSIFY(common)
540 BOOST_SPIRIT_X3_CLASSIFY(unknown)
541
542#undef BOOST_SPIRIT_X3_BASIC_CLASSIFY
543#undef BOOST_SPIRIT_X3_CLASSIFY
544 };
545
546 template <typename Tag>
547 struct unicode_char_class
548 : char_parser<unicode_char_class<Tag>>
549 {
550 typedef char_encoding::unicode encoding;
551 typedef Tag tag;
552 typedef typename encoding::char_type char_type;
553 typedef char_type attribute_type;
554 static bool const has_attribute = true;
555
556 template <typename Char, typename Context>
557 bool test(Char ch, Context const&) const
558 {
559 return encoding::ischar(ch) && unicode_char_class_base::is(tag(), ch);
560 }
561 };
562
563#define BOOST_SPIRIT_X3_CHAR_CLASS(name) \
564 typedef unicode_char_class<name##_tag> name##_type; \
565 constexpr name##_type name = name##_type(); \
566 /***/
567
568 namespace unicode
569 {
570 typedef any_char<char_encoding::unicode> char_type;
571 constexpr auto char_ = char_type{};
572
573 ///////////////////////////////////////////////////////////////////////////
574 // Unicode Major Categories
575 ///////////////////////////////////////////////////////////////////////////
576 BOOST_SPIRIT_X3_CHAR_CLASS(alnum)
577 BOOST_SPIRIT_X3_CHAR_CLASS(alpha)
578 BOOST_SPIRIT_X3_CHAR_CLASS(digit)
579 BOOST_SPIRIT_X3_CHAR_CLASS(xdigit)
580 BOOST_SPIRIT_X3_CHAR_CLASS(cntrl)
581 BOOST_SPIRIT_X3_CHAR_CLASS(graph)
582 BOOST_SPIRIT_X3_CHAR_CLASS(lower)
583 BOOST_SPIRIT_X3_CHAR_CLASS(print)
584 BOOST_SPIRIT_X3_CHAR_CLASS(punct)
585 BOOST_SPIRIT_X3_CHAR_CLASS(space)
586 BOOST_SPIRIT_X3_CHAR_CLASS(blank)
587 BOOST_SPIRIT_X3_CHAR_CLASS(upper)
588
589 ///////////////////////////////////////////////////////////////////////////
590 // Unicode Major Categories
591 ///////////////////////////////////////////////////////////////////////////
592 BOOST_SPIRIT_X3_CHAR_CLASS(letter)
593 BOOST_SPIRIT_X3_CHAR_CLASS(mark)
594 BOOST_SPIRIT_X3_CHAR_CLASS(number)
595 BOOST_SPIRIT_X3_CHAR_CLASS(separator)
596 BOOST_SPIRIT_X3_CHAR_CLASS(other)
597 BOOST_SPIRIT_X3_CHAR_CLASS(punctuation)
598 BOOST_SPIRIT_X3_CHAR_CLASS(symbol)
599
600 ///////////////////////////////////////////////////////////////////////////
601 // Unicode General Categories
602 ///////////////////////////////////////////////////////////////////////////
603 BOOST_SPIRIT_X3_CHAR_CLASS(uppercase_letter)
604 BOOST_SPIRIT_X3_CHAR_CLASS(lowercase_letter)
605 BOOST_SPIRIT_X3_CHAR_CLASS(titlecase_letter)
606 BOOST_SPIRIT_X3_CHAR_CLASS(modifier_letter)
607 BOOST_SPIRIT_X3_CHAR_CLASS(other_letter)
608
609 BOOST_SPIRIT_X3_CHAR_CLASS(nonspacing_mark)
610 BOOST_SPIRIT_X3_CHAR_CLASS(enclosing_mark)
611 BOOST_SPIRIT_X3_CHAR_CLASS(spacing_mark)
612
613 BOOST_SPIRIT_X3_CHAR_CLASS(decimal_number)
614 BOOST_SPIRIT_X3_CHAR_CLASS(letter_number)
615 BOOST_SPIRIT_X3_CHAR_CLASS(other_number)
616
617 BOOST_SPIRIT_X3_CHAR_CLASS(space_separator)
618 BOOST_SPIRIT_X3_CHAR_CLASS(line_separator)
619 BOOST_SPIRIT_X3_CHAR_CLASS(paragraph_separator)
620
621 BOOST_SPIRIT_X3_CHAR_CLASS(control)
622 BOOST_SPIRIT_X3_CHAR_CLASS(format)
623 BOOST_SPIRIT_X3_CHAR_CLASS(private_use)
624 BOOST_SPIRIT_X3_CHAR_CLASS(surrogate)
625 BOOST_SPIRIT_X3_CHAR_CLASS(unassigned)
626
627 BOOST_SPIRIT_X3_CHAR_CLASS(dash_punctuation)
628 BOOST_SPIRIT_X3_CHAR_CLASS(open_punctuation)
629 BOOST_SPIRIT_X3_CHAR_CLASS(close_punctuation)
630 BOOST_SPIRIT_X3_CHAR_CLASS(connector_punctuation)
631 BOOST_SPIRIT_X3_CHAR_CLASS(other_punctuation)
632 BOOST_SPIRIT_X3_CHAR_CLASS(initial_punctuation)
633 BOOST_SPIRIT_X3_CHAR_CLASS(final_punctuation)
634
635 BOOST_SPIRIT_X3_CHAR_CLASS(math_symbol)
636 BOOST_SPIRIT_X3_CHAR_CLASS(currency_symbol)
637 BOOST_SPIRIT_X3_CHAR_CLASS(modifier_symbol)
638 BOOST_SPIRIT_X3_CHAR_CLASS(other_symbol)
639
640 ///////////////////////////////////////////////////////////////////////////
641 // Unicode Derived Categories
642 ///////////////////////////////////////////////////////////////////////////
643 BOOST_SPIRIT_X3_CHAR_CLASS(alphabetic)
644 BOOST_SPIRIT_X3_CHAR_CLASS(uppercase)
645 BOOST_SPIRIT_X3_CHAR_CLASS(lowercase)
646 BOOST_SPIRIT_X3_CHAR_CLASS(white_space)
647 BOOST_SPIRIT_X3_CHAR_CLASS(hex_digit)
648 BOOST_SPIRIT_X3_CHAR_CLASS(noncharacter_code_point)
649 BOOST_SPIRIT_X3_CHAR_CLASS(default_ignorable_code_point)
650
651 ///////////////////////////////////////////////////////////////////////////
652 // Unicode Scripts
653 ///////////////////////////////////////////////////////////////////////////
654 BOOST_SPIRIT_X3_CHAR_CLASS(adlam)
655 BOOST_SPIRIT_X3_CHAR_CLASS(caucasian_albanian)
656 BOOST_SPIRIT_X3_CHAR_CLASS(ahom)
657 BOOST_SPIRIT_X3_CHAR_CLASS(arabic)
658 BOOST_SPIRIT_X3_CHAR_CLASS(imperial_aramaic)
659 BOOST_SPIRIT_X3_CHAR_CLASS(armenian)
660 BOOST_SPIRIT_X3_CHAR_CLASS(avestan)
661 BOOST_SPIRIT_X3_CHAR_CLASS(balinese)
662 BOOST_SPIRIT_X3_CHAR_CLASS(bamum)
663 BOOST_SPIRIT_X3_CHAR_CLASS(bassa_vah)
664 BOOST_SPIRIT_X3_CHAR_CLASS(batak)
665 BOOST_SPIRIT_X3_CHAR_CLASS(bengali)
666 BOOST_SPIRIT_X3_CHAR_CLASS(bhaiksuki)
667 BOOST_SPIRIT_X3_CHAR_CLASS(bopomofo)
668 BOOST_SPIRIT_X3_CHAR_CLASS(brahmi)
669 BOOST_SPIRIT_X3_CHAR_CLASS(braille)
670 BOOST_SPIRIT_X3_CHAR_CLASS(buginese)
671 BOOST_SPIRIT_X3_CHAR_CLASS(buhid)
672 BOOST_SPIRIT_X3_CHAR_CLASS(chakma)
673 BOOST_SPIRIT_X3_CHAR_CLASS(canadian_aboriginal)
674 BOOST_SPIRIT_X3_CHAR_CLASS(carian)
675 BOOST_SPIRIT_X3_CHAR_CLASS(cham)
676 BOOST_SPIRIT_X3_CHAR_CLASS(cherokee)
677 BOOST_SPIRIT_X3_CHAR_CLASS(chorasmian)
678 BOOST_SPIRIT_X3_CHAR_CLASS(coptic)
679 BOOST_SPIRIT_X3_CHAR_CLASS(cypro_minoan)
680 BOOST_SPIRIT_X3_CHAR_CLASS(cypriot)
681 BOOST_SPIRIT_X3_CHAR_CLASS(cyrillic)
682 BOOST_SPIRIT_X3_CHAR_CLASS(devanagari)
683 BOOST_SPIRIT_X3_CHAR_CLASS(dives_akuru)
684 BOOST_SPIRIT_X3_CHAR_CLASS(dogra)
685 BOOST_SPIRIT_X3_CHAR_CLASS(deseret)
686 BOOST_SPIRIT_X3_CHAR_CLASS(duployan)
687 BOOST_SPIRIT_X3_CHAR_CLASS(egyptian_hieroglyphs)
688 BOOST_SPIRIT_X3_CHAR_CLASS(elbasan)
689 BOOST_SPIRIT_X3_CHAR_CLASS(elymaic)
690 BOOST_SPIRIT_X3_CHAR_CLASS(ethiopic)
691 BOOST_SPIRIT_X3_CHAR_CLASS(georgian)
692 BOOST_SPIRIT_X3_CHAR_CLASS(glagolitic)
693 BOOST_SPIRIT_X3_CHAR_CLASS(gunjala_gondi)
694 BOOST_SPIRIT_X3_CHAR_CLASS(masaram_gondi)
695 BOOST_SPIRIT_X3_CHAR_CLASS(gothic)
696 BOOST_SPIRIT_X3_CHAR_CLASS(grantha)
697 BOOST_SPIRIT_X3_CHAR_CLASS(greek)
698 BOOST_SPIRIT_X3_CHAR_CLASS(gujarati)
699 BOOST_SPIRIT_X3_CHAR_CLASS(gurmukhi)
700 BOOST_SPIRIT_X3_CHAR_CLASS(hangul)
701 BOOST_SPIRIT_X3_CHAR_CLASS(han)
702 BOOST_SPIRIT_X3_CHAR_CLASS(hanunoo)
703 BOOST_SPIRIT_X3_CHAR_CLASS(hatran)
704 BOOST_SPIRIT_X3_CHAR_CLASS(hebrew)
705 BOOST_SPIRIT_X3_CHAR_CLASS(hiragana)
706 BOOST_SPIRIT_X3_CHAR_CLASS(anatolian_hieroglyphs)
707 BOOST_SPIRIT_X3_CHAR_CLASS(pahawh_hmong)
708 BOOST_SPIRIT_X3_CHAR_CLASS(nyiakeng_puachue_hmong)
709 BOOST_SPIRIT_X3_CHAR_CLASS(katakana_or_hiragana)
710 BOOST_SPIRIT_X3_CHAR_CLASS(old_hungarian)
711 BOOST_SPIRIT_X3_CHAR_CLASS(old_italic)
712 BOOST_SPIRIT_X3_CHAR_CLASS(javanese)
713 BOOST_SPIRIT_X3_CHAR_CLASS(kayah_li)
714 BOOST_SPIRIT_X3_CHAR_CLASS(katakana)
715 BOOST_SPIRIT_X3_CHAR_CLASS(kawi)
716 BOOST_SPIRIT_X3_CHAR_CLASS(kharoshthi)
717 BOOST_SPIRIT_X3_CHAR_CLASS(khmer)
718 BOOST_SPIRIT_X3_CHAR_CLASS(khojki)
719 BOOST_SPIRIT_X3_CHAR_CLASS(khitan_small_script)
720 BOOST_SPIRIT_X3_CHAR_CLASS(kannada)
721 BOOST_SPIRIT_X3_CHAR_CLASS(kaithi)
722 BOOST_SPIRIT_X3_CHAR_CLASS(tai_tham)
723 BOOST_SPIRIT_X3_CHAR_CLASS(lao)
724 BOOST_SPIRIT_X3_CHAR_CLASS(latin)
725 BOOST_SPIRIT_X3_CHAR_CLASS(lepcha)
726 BOOST_SPIRIT_X3_CHAR_CLASS(limbu)
727 BOOST_SPIRIT_X3_CHAR_CLASS(linear_a)
728 BOOST_SPIRIT_X3_CHAR_CLASS(linear_b)
729 BOOST_SPIRIT_X3_CHAR_CLASS(lisu)
730 BOOST_SPIRIT_X3_CHAR_CLASS(lycian)
731 BOOST_SPIRIT_X3_CHAR_CLASS(lydian)
732 BOOST_SPIRIT_X3_CHAR_CLASS(mahajani)
733 BOOST_SPIRIT_X3_CHAR_CLASS(makasar)
734 BOOST_SPIRIT_X3_CHAR_CLASS(mandaic)
735 BOOST_SPIRIT_X3_CHAR_CLASS(manichaean)
736 BOOST_SPIRIT_X3_CHAR_CLASS(marchen)
737 BOOST_SPIRIT_X3_CHAR_CLASS(medefaidrin)
738 BOOST_SPIRIT_X3_CHAR_CLASS(mende_kikakui)
739 BOOST_SPIRIT_X3_CHAR_CLASS(meroitic_cursive)
740 BOOST_SPIRIT_X3_CHAR_CLASS(meroitic_hieroglyphs)
741 BOOST_SPIRIT_X3_CHAR_CLASS(malayalam)
742 BOOST_SPIRIT_X3_CHAR_CLASS(modi)
743 BOOST_SPIRIT_X3_CHAR_CLASS(mongolian)
744 BOOST_SPIRIT_X3_CHAR_CLASS(mro)
745 BOOST_SPIRIT_X3_CHAR_CLASS(meetei_mayek)
746 BOOST_SPIRIT_X3_CHAR_CLASS(multani)
747 BOOST_SPIRIT_X3_CHAR_CLASS(myanmar)
748 BOOST_SPIRIT_X3_CHAR_CLASS(nag_mundari)
749 BOOST_SPIRIT_X3_CHAR_CLASS(nandinagari)
750 BOOST_SPIRIT_X3_CHAR_CLASS(old_north_arabian)
751 BOOST_SPIRIT_X3_CHAR_CLASS(nabataean)
752 BOOST_SPIRIT_X3_CHAR_CLASS(newa)
753 BOOST_SPIRIT_X3_CHAR_CLASS(nko)
754 BOOST_SPIRIT_X3_CHAR_CLASS(nushu)
755 BOOST_SPIRIT_X3_CHAR_CLASS(ogham)
756 BOOST_SPIRIT_X3_CHAR_CLASS(ol_chiki)
757 BOOST_SPIRIT_X3_CHAR_CLASS(old_turkic)
758 BOOST_SPIRIT_X3_CHAR_CLASS(oriya)
759 BOOST_SPIRIT_X3_CHAR_CLASS(osage)
760 BOOST_SPIRIT_X3_CHAR_CLASS(osmanya)
761 BOOST_SPIRIT_X3_CHAR_CLASS(old_uyghur)
762 BOOST_SPIRIT_X3_CHAR_CLASS(palmyrene)
763 BOOST_SPIRIT_X3_CHAR_CLASS(pau_cin_hau)
764 BOOST_SPIRIT_X3_CHAR_CLASS(old_permic)
765 BOOST_SPIRIT_X3_CHAR_CLASS(phags_pa)
766 BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_pahlavi)
767 BOOST_SPIRIT_X3_CHAR_CLASS(psalter_pahlavi)
768 BOOST_SPIRIT_X3_CHAR_CLASS(phoenician)
769 BOOST_SPIRIT_X3_CHAR_CLASS(miao)
770 BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_parthian)
771 BOOST_SPIRIT_X3_CHAR_CLASS(rejang)
772 BOOST_SPIRIT_X3_CHAR_CLASS(hanifi_rohingya)
773 BOOST_SPIRIT_X3_CHAR_CLASS(runic)
774 BOOST_SPIRIT_X3_CHAR_CLASS(samaritan)
775 BOOST_SPIRIT_X3_CHAR_CLASS(old_south_arabian)
776 BOOST_SPIRIT_X3_CHAR_CLASS(saurashtra)
777 BOOST_SPIRIT_X3_CHAR_CLASS(signwriting)
778 BOOST_SPIRIT_X3_CHAR_CLASS(shavian)
779 BOOST_SPIRIT_X3_CHAR_CLASS(sharada)
780 BOOST_SPIRIT_X3_CHAR_CLASS(siddham)
781 BOOST_SPIRIT_X3_CHAR_CLASS(khudawadi)
782 BOOST_SPIRIT_X3_CHAR_CLASS(sinhala)
783 BOOST_SPIRIT_X3_CHAR_CLASS(sogdian)
784 BOOST_SPIRIT_X3_CHAR_CLASS(old_sogdian)
785 BOOST_SPIRIT_X3_CHAR_CLASS(sora_sompeng)
786 BOOST_SPIRIT_X3_CHAR_CLASS(soyombo)
787 BOOST_SPIRIT_X3_CHAR_CLASS(sundanese)
788 BOOST_SPIRIT_X3_CHAR_CLASS(syloti_nagri)
789 BOOST_SPIRIT_X3_CHAR_CLASS(syriac)
790 BOOST_SPIRIT_X3_CHAR_CLASS(tagbanwa)
791 BOOST_SPIRIT_X3_CHAR_CLASS(takri)
792 BOOST_SPIRIT_X3_CHAR_CLASS(tai_le)
793 BOOST_SPIRIT_X3_CHAR_CLASS(new_tai_lue)
794 BOOST_SPIRIT_X3_CHAR_CLASS(tamil)
795 BOOST_SPIRIT_X3_CHAR_CLASS(tangut)
796 BOOST_SPIRIT_X3_CHAR_CLASS(tai_viet)
797 BOOST_SPIRIT_X3_CHAR_CLASS(telugu)
798 BOOST_SPIRIT_X3_CHAR_CLASS(tifinagh)
799 BOOST_SPIRIT_X3_CHAR_CLASS(tagalog)
800 BOOST_SPIRIT_X3_CHAR_CLASS(thaana)
801 BOOST_SPIRIT_X3_CHAR_CLASS(thai)
802 BOOST_SPIRIT_X3_CHAR_CLASS(tibetan)
803 BOOST_SPIRIT_X3_CHAR_CLASS(tirhuta)
804 BOOST_SPIRIT_X3_CHAR_CLASS(tangsa)
805 BOOST_SPIRIT_X3_CHAR_CLASS(toto)
806 BOOST_SPIRIT_X3_CHAR_CLASS(ugaritic)
807 BOOST_SPIRIT_X3_CHAR_CLASS(vai)
808 BOOST_SPIRIT_X3_CHAR_CLASS(vithkuqi)
809 BOOST_SPIRIT_X3_CHAR_CLASS(warang_citi)
810 BOOST_SPIRIT_X3_CHAR_CLASS(wancho)
811 BOOST_SPIRIT_X3_CHAR_CLASS(old_persian)
812 BOOST_SPIRIT_X3_CHAR_CLASS(cuneiform)
813 BOOST_SPIRIT_X3_CHAR_CLASS(yezidi)
814 BOOST_SPIRIT_X3_CHAR_CLASS(yi)
815 BOOST_SPIRIT_X3_CHAR_CLASS(zanabazar_square)
816 BOOST_SPIRIT_X3_CHAR_CLASS(inherited)
817 BOOST_SPIRIT_X3_CHAR_CLASS(common)
818 BOOST_SPIRIT_X3_CHAR_CLASS(unknown)
819 }
820
821#undef BOOST_SPIRIT_X3_CHAR_CLASS
822
823}}}
824
825#endif
826

source code of boost/libs/spirit/include/boost/spirit/home/x3/char/unicode.hpp