/*============================================================================= Copyright (c) 2001-2014 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_X3_ANY_CHAR_APRIL_16_2006_1051AM) #define BOOST_SPIRIT_X3_ANY_CHAR_APRIL_16_2006_1051AM #include #include #include namespace boost { namespace spirit { namespace x3 { template struct any_char : char_parser> { typedef typename Encoding::char_type char_type; typedef Encoding encoding; typedef char_type attribute_type; static bool const has_attribute = true; template bool test(Char ch_, Context const&) const { return ((sizeof(Char) <= sizeof(char_type)) || encoding::ischar(ch_)); } template literal_char operator()(Char ch) const { return { ch }; } template literal_char operator()(const Char (&ch)[2]) const { return { ch[0] }; } template char_set operator()(const Char (&ch)[N]) const { return { ch }; } template char_range operator()(Char from, Char to) const { return { from, to }; } template char_range operator()(Char (&from)[2], Char (&to)[2]) const { return { static_cast(from[0]), static_cast(to[0]) }; } template char_set operator()(std::basic_string const& s) const { return { s }; } }; }}} #endif