summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp')
-rw-r--r--3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp313
1 files changed, 313 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp
new file mode 100644
index 0000000..9b8a72f
--- /dev/null
+++ b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp
@@ -0,0 +1,313 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Hartmut Kaiser
+ Copyright (c) 2001-2011 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+#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>
+
+///////////////////////////////////////////////////////////////////////////////
+// constants used to classify the single characters
+///////////////////////////////////////////////////////////////////////////////
+#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
+{
+ // The detection of isgraph(), isprint() and isblank() is done programmatically
+ // to keep the character type table small. Additionally, these functions are
+ // rather seldom used and the programmatic detection is very simple.
+
+ ///////////////////////////////////////////////////////////////////////////
+ // ASCII character classification table
+ ///////////////////////////////////////////////////////////////////////////
+ const unsigned char ascii_char_types[] =
+ {
+ /* NUL 0 0 */ BOOST_CC_CTRL,
+ /* SOH 1 1 */ BOOST_CC_CTRL,
+ /* STX 2 2 */ BOOST_CC_CTRL,
+ /* ETX 3 3 */ BOOST_CC_CTRL,
+ /* EOT 4 4 */ BOOST_CC_CTRL,
+ /* ENQ 5 5 */ BOOST_CC_CTRL,
+ /* ACK 6 6 */ BOOST_CC_CTRL,
+ /* BEL 7 7 */ BOOST_CC_CTRL,
+ /* BS 8 8 */ BOOST_CC_CTRL,
+ /* HT 9 9 */ BOOST_CC_CTRL|BOOST_CC_SPACE,
+ /* NL 10 a */ BOOST_CC_CTRL|BOOST_CC_SPACE,
+ /* VT 11 b */ BOOST_CC_CTRL|BOOST_CC_SPACE,
+ /* NP 12 c */ BOOST_CC_CTRL|BOOST_CC_SPACE,
+ /* CR 13 d */ BOOST_CC_CTRL|BOOST_CC_SPACE,
+ /* SO 14 e */ BOOST_CC_CTRL,
+ /* SI 15 f */ BOOST_CC_CTRL,
+ /* DLE 16 10 */ BOOST_CC_CTRL,
+ /* DC1 17 11 */ BOOST_CC_CTRL,
+ /* DC2 18 12 */ BOOST_CC_CTRL,
+ /* DC3 19 13 */ BOOST_CC_CTRL,
+ /* DC4 20 14 */ BOOST_CC_CTRL,
+ /* NAK 21 15 */ BOOST_CC_CTRL,
+ /* SYN 22 16 */ BOOST_CC_CTRL,
+ /* ETB 23 17 */ BOOST_CC_CTRL,
+ /* CAN 24 18 */ BOOST_CC_CTRL,
+ /* EM 25 19 */ BOOST_CC_CTRL,
+ /* SUB 26 1a */ BOOST_CC_CTRL,
+ /* ESC 27 1b */ BOOST_CC_CTRL,
+ /* FS 28 1c */ BOOST_CC_CTRL,
+ /* GS 29 1d */ BOOST_CC_CTRL,
+ /* RS 30 1e */ BOOST_CC_CTRL,
+ /* US 31 1f */ BOOST_CC_CTRL,
+ /* SP 32 20 */ BOOST_CC_SPACE,
+ /* ! 33 21 */ BOOST_CC_PUNCT,
+ /* " 34 22 */ BOOST_CC_PUNCT,
+ /* # 35 23 */ BOOST_CC_PUNCT,
+ /* $ 36 24 */ BOOST_CC_PUNCT,
+ /* % 37 25 */ BOOST_CC_PUNCT,
+ /* & 38 26 */ BOOST_CC_PUNCT,
+ /* ' 39 27 */ BOOST_CC_PUNCT,
+ /* ( 40 28 */ BOOST_CC_PUNCT,
+ /* ) 41 29 */ BOOST_CC_PUNCT,
+ /* * 42 2a */ BOOST_CC_PUNCT,
+ /* + 43 2b */ BOOST_CC_PUNCT,
+ /* , 44 2c */ BOOST_CC_PUNCT,
+ /* - 45 2d */ BOOST_CC_PUNCT,
+ /* . 46 2e */ BOOST_CC_PUNCT,
+ /* / 47 2f */ BOOST_CC_PUNCT,
+ /* 0 48 30 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 1 49 31 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 2 50 32 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 3 51 33 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 4 52 34 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 5 53 35 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 6 54 36 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 7 55 37 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 8 56 38 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* 9 57 39 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT,
+ /* : 58 3a */ BOOST_CC_PUNCT,
+ /* ; 59 3b */ BOOST_CC_PUNCT,
+ /* < 60 3c */ BOOST_CC_PUNCT,
+ /* = 61 3d */ BOOST_CC_PUNCT,
+ /* > 62 3e */ BOOST_CC_PUNCT,
+ /* ? 63 3f */ BOOST_CC_PUNCT,
+ /* @ 64 40 */ BOOST_CC_PUNCT,
+ /* A 65 41 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
+ /* B 66 42 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
+ /* C 67 43 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
+ /* D 68 44 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
+ /* E 69 45 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
+ /* F 70 46 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER,
+ /* G 71 47 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* H 72 48 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* I 73 49 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* J 74 4a */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* K 75 4b */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* L 76 4c */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* M 77 4d */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* N 78 4e */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* O 79 4f */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* P 80 50 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* Q 81 51 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* R 82 52 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* S 83 53 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* T 84 54 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* U 85 55 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* V 86 56 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* W 87 57 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* X 88 58 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* Y 89 59 */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* Z 90 5a */ BOOST_CC_ALPHA|BOOST_CC_UPPER,
+ /* [ 91 5b */ BOOST_CC_PUNCT,
+ /* \ 92 5c */ BOOST_CC_PUNCT,
+ /* ] 93 5d */ BOOST_CC_PUNCT,
+ /* ^ 94 5e */ BOOST_CC_PUNCT,
+ /* _ 95 5f */ BOOST_CC_PUNCT,
+ /* ` 96 60 */ BOOST_CC_PUNCT,
+ /* a 97 61 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
+ /* b 98 62 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
+ /* c 99 63 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
+ /* d 100 64 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
+ /* e 101 65 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
+ /* f 102 66 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER,
+ /* g 103 67 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* h 104 68 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* i 105 69 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* j 106 6a */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* k 107 6b */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* l 108 6c */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* m 109 6d */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* n 110 6e */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* o 111 6f */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* p 112 70 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* q 113 71 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* r 114 72 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* s 115 73 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* t 116 74 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* u 117 75 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* v 118 76 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* w 119 77 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* x 120 78 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* y 121 79 */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* z 122 7a */ BOOST_CC_ALPHA|BOOST_CC_LOWER,
+ /* { 123 7b */ BOOST_CC_PUNCT,
+ /* | 124 7c */ BOOST_CC_PUNCT,
+ /* } 125 7d */ BOOST_CC_PUNCT,
+ /* ~ 126 7e */ BOOST_CC_PUNCT,
+ /* DEL 127 7f */ BOOST_CC_CTRL,
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Test characters for specified conditions (using ASCII)
+ ///////////////////////////////////////////////////////////////////////////
+ struct ascii
+ {
+ typedef char char_type;
+
+ static bool
+ isascii_(int ch)
+ {
+ return 0 == (ch & ~0x7f);
+ }
+
+ static bool
+ ischar(int ch)
+ {
+ return isascii_(ch);
+ }
+
+ static int
+ isalnum(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_ALPHA)
+ || (ascii_char_types[ch] & BOOST_CC_DIGIT);
+ }
+
+ static int
+ isalpha(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_ALPHA);
+ }
+
+ static int
+ isdigit(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_DIGIT);
+ }
+
+ static int
+ isxdigit(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_XDIGIT);
+ }
+
+ static int
+ iscntrl(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_CTRL);
+ }
+
+ static int
+ isgraph(int ch)
+ {
+ return ('\x21' <= ch && ch <= '\x7e');
+ }
+
+ static int
+ islower(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_LOWER);
+ }
+
+ static int
+ isprint(int ch)
+ {
+ return ('\x20' <= ch && ch <= '\x7e');
+ }
+
+ static int
+ ispunct(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_PUNCT);
+ }
+
+ static int
+ isspace(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_SPACE);
+ }
+
+ static int
+ isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch)
+ {
+ return ('\x09' == ch || '\x20' == ch);
+ }
+
+ static int
+ isupper(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return (ascii_char_types[ch] & BOOST_CC_UPPER);
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+ // Simple character conversions
+ ///////////////////////////////////////////////////////////////////////
+
+ static int
+ tolower(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return isupper(ch) ? (ch - 'A' + 'a') : ch;
+ }
+
+ static int
+ toupper(int ch)
+ {
+ BOOST_ASSERT(isascii_(ch));
+ return islower(ch) ? (ch - 'a' + 'A') : ch;
+ }
+
+ static ::boost::uint32_t
+ toucs4(int ch)
+ {
+ return ch;
+ }
+ };
+
+}}}
+
+///////////////////////////////////////////////////////////////////////////////
+// undefine macros
+///////////////////////////////////////////////////////////////////////////////
+#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
+