123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- #if !defined(BOOST_SPIRIT_ASCII_APRIL_26_2006_1106PM)
- #define BOOST_SPIRIT_ASCII_APRIL_26_2006_1106PM
- #if defined(_MSC_VER)
- #pragma once
- #endif
- #include <climits>
- #include <boost/assert.hpp>
- #include <boost/cstdint.hpp>
- #define BOOST_CC_DIGIT 0x0001
- #define BOOST_CC_XDIGIT 0x0002
- #define BOOST_CC_ALPHA 0x0004
- #define BOOST_CC_CTRL 0x0008
- #define BOOST_CC_LOWER 0x0010
- #define BOOST_CC_UPPER 0x0020
- #define BOOST_CC_SPACE 0x0040
- #define BOOST_CC_PUNCT 0x0080
- namespace boost { namespace spirit { namespace char_encoding
- {
-
-
-
-
-
-
- const unsigned char ascii_char_types[] =
- {
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL|BOOST_CC_SPACE,
- BOOST_CC_CTRL|BOOST_CC_SPACE,
- BOOST_CC_CTRL|BOOST_CC_SPACE,
- BOOST_CC_CTRL|BOOST_CC_SPACE,
- BOOST_CC_CTRL|BOOST_CC_SPACE,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_CTRL,
- BOOST_CC_SPACE,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_ALPHA|BOOST_CC_UPPER,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_ALPHA|BOOST_CC_LOWER,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_PUNCT,
- BOOST_CC_CTRL,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- };
-
-
-
- struct ascii
- {
- typedef char char_type;
- typedef unsigned char classify_type;
- static bool
- isascii_(int ch)
- {
- return 0 == (ch & ~0x7f);
- }
- static bool
- ischar(int ch)
- {
- return isascii_(ch);
- }
-
-
-
-
-
- static bool
- strict_ischar(int ch)
- {
- return ch >= 0 && ch <= 127;
- }
- static bool
- isalnum(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_ALPHA)
- || (ascii_char_types[ch] & BOOST_CC_DIGIT);
- }
- static bool
- isalpha(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_ALPHA) ? true : false;
- }
- static bool
- isdigit(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_DIGIT) ? true : false;
- }
- static bool
- isxdigit(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_XDIGIT) ? true : false;
- }
- static bool
- iscntrl(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_CTRL) ? true : false;
- }
- static bool
- isgraph(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return ('\x21' <= ch && ch <= '\x7e');
- }
- static bool
- islower(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_LOWER) ? true : false;
- }
- static bool
- isprint(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return ('\x20' <= ch && ch <= '\x7e');
- }
- static bool
- ispunct(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_PUNCT) ? true : false;
- }
- static bool
- isspace(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_SPACE) ? true : false;
- }
- static bool
- isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return ('\x09' == ch || '\x20' == ch);
- }
- static bool
- isupper(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return (ascii_char_types[ch] & BOOST_CC_UPPER) ? true : false;
- }
-
-
-
- static int
- tolower(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return isupper(ch) ? (ch - 'A' + 'a') : ch;
- }
- static int
- toupper(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return islower(ch) ? (ch - 'a' + 'A') : ch;
- }
- static ::boost::uint32_t
- toucs4(int ch)
- {
- BOOST_ASSERT(strict_ischar(ch));
- return ch;
- }
- };
- }}}
- #undef BOOST_CC_DIGIT
- #undef BOOST_CC_XDIGIT
- #undef BOOST_CC_ALPHA
- #undef BOOST_CC_CTRL
- #undef BOOST_CC_LOWER
- #undef BOOST_CC_UPPER
- #undef BOOST_CC_PUNCT
- #undef BOOST_CC_SPACE
- #endif
|