1 /*============================================================================= 2 Copyright (c) 2001-2011 Hartmut Kaiser 3 Copyright (c) 2001-2011 Joel de Guzman 4 5 Distributed under the Boost Software License, Version 1.0. (See accompanying 6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 =============================================================================*/ 8 #if !defined(BOOST_SPIRIT_STANDARD_APRIL_26_2006_1106PM) 9 #define BOOST_SPIRIT_STANDARD_APRIL_26_2006_1106PM 10 11 #if defined(_MSC_VER) 12 #pragma once 13 #endif 14 15 #include <cctype> 16 #include <boost/cstdint.hpp> 17 18 namespace boost { namespace spirit { namespace char_encoding 19 { 20 /////////////////////////////////////////////////////////////////////////// 21 // Test characters for specified conditions (using std functions) 22 /////////////////////////////////////////////////////////////////////////// 23 struct standard 24 { 25 typedef char char_type; 26 27 static bool isascii_boost::spirit::char_encoding::standard28 isascii_(int ch) 29 { 30 return 0 == (ch & ~0x7f); 31 } 32 33 static bool ischarboost::spirit::char_encoding::standard34 ischar(int ch) 35 { 36 // uses all 8 bits 37 // we have to watch out for sign extensions 38 return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) ? true : false; 39 } 40 41 static bool isalnumboost::spirit::char_encoding::standard42 isalnum(int ch) 43 { 44 return std::isalnum(ch) ? true : false; 45 } 46 47 static bool isalphaboost::spirit::char_encoding::standard48 isalpha(int ch) 49 { 50 return std::isalpha(ch) ? true : false; 51 } 52 53 static bool isdigitboost::spirit::char_encoding::standard54 isdigit(int ch) 55 { 56 return std::isdigit(ch) ? true : false; 57 } 58 59 static bool isxdigitboost::spirit::char_encoding::standard60 isxdigit(int ch) 61 { 62 return std::isxdigit(ch) ? true : false; 63 } 64 65 static bool iscntrlboost::spirit::char_encoding::standard66 iscntrl(int ch) 67 { 68 return std::iscntrl(ch) ? true : false; 69 } 70 71 static bool isgraphboost::spirit::char_encoding::standard72 isgraph(int ch) 73 { 74 return std::isgraph(ch) ? true : false; 75 } 76 77 static bool islowerboost::spirit::char_encoding::standard78 islower(int ch) 79 { 80 return std::islower(ch) ? true : false; 81 } 82 83 static bool isprintboost::spirit::char_encoding::standard84 isprint(int ch) 85 { 86 return std::isprint(ch) ? true : false; 87 } 88 89 static bool ispunctboost::spirit::char_encoding::standard90 ispunct(int ch) 91 { 92 return std::ispunct(ch) ? true : false; 93 } 94 95 static bool isspaceboost::spirit::char_encoding::standard96 isspace(int ch) 97 { 98 return std::isspace(ch) ? true : false; 99 } 100 101 static bool BOOST_PREVENT_MACRO_SUBSTITUTIONboost::spirit::char_encoding::standard102 isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch) 103 { 104 return (ch == ' ' || ch == '\t'); 105 } 106 107 static bool isupperboost::spirit::char_encoding::standard108 isupper(int ch) 109 { 110 return std::isupper(ch) ? true : false; 111 } 112 113 /////////////////////////////////////////////////////////////////////////////// 114 // Simple character conversions 115 /////////////////////////////////////////////////////////////////////////////// 116 117 static int tolowerboost::spirit::char_encoding::standard118 tolower(int ch) 119 { 120 return std::tolower(ch); 121 } 122 123 static int toupperboost::spirit::char_encoding::standard124 toupper(int ch) 125 { 126 return std::toupper(ch); 127 } 128 129 static ::boost::uint32_t toucs4boost::spirit::char_encoding::standard130 toucs4(int ch) 131 { 132 return ch; 133 } 134 }; 135 }}} 136 137 #endif 138 139