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 int
isalnumboost::spirit::char_encoding::standard42         isalnum(int ch)
43         {
44             return std::isalnum(ch);
45         }
46 
47         static int
isalphaboost::spirit::char_encoding::standard48         isalpha(int ch)
49         {
50             return std::isalpha(ch);
51         }
52 
53         static int
isdigitboost::spirit::char_encoding::standard54         isdigit(int ch)
55         {
56             return std::isdigit(ch);
57         }
58 
59         static int
isxdigitboost::spirit::char_encoding::standard60         isxdigit(int ch)
61         {
62             return std::isxdigit(ch);
63         }
64 
65         static int
iscntrlboost::spirit::char_encoding::standard66         iscntrl(int ch)
67         {
68             return std::iscntrl(ch);
69         }
70 
71         static int
isgraphboost::spirit::char_encoding::standard72         isgraph(int ch)
73         {
74             return std::isgraph(ch);
75         }
76 
77         static int
islowerboost::spirit::char_encoding::standard78         islower(int ch)
79         {
80             return std::islower(ch);
81         }
82 
83         static int
isprintboost::spirit::char_encoding::standard84         isprint(int ch)
85         {
86             return std::isprint(ch);
87         }
88 
89         static int
ispunctboost::spirit::char_encoding::standard90         ispunct(int ch)
91         {
92             return std::ispunct(ch);
93         }
94 
95         static int
isspaceboost::spirit::char_encoding::standard96         isspace(int ch)
97         {
98             return std::isspace(ch);
99         }
100 
101         static int
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 int
isupperboost::spirit::char_encoding::standard108         isupper(int ch)
109         {
110             return std::isupper(ch);
111         }
112 
113     ///////////////////////////////////////////////////////////////////////////////
114     //  Simple character conversions
115     ///////////////////////////////////////////////////////////////////////////////
116         static int
tolowerboost::spirit::char_encoding::standard117         tolower(int ch)
118         {
119             return std::tolower(ch);
120         }
121 
122         static int
toupperboost::spirit::char_encoding::standard123         toupper(int ch)
124         {
125             return std::toupper(ch);
126         }
127 
128         static ::boost::uint32_t
toucs4boost::spirit::char_encoding::standard129         toucs4(int ch)
130         {
131             return ch;
132         }
133     };
134 }}}
135 
136 #endif
137 
138