/*============================================================================= 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_LITERAL_STRING_APR_18_2006_1125PM) #define BOOST_SPIRIT_X3_LITERAL_STRING_APR_18_2006_1125PM #if defined(_MSC_VER) #pragma once #endif #include #include #include #include #include #include #include #include #include #include namespace boost { namespace spirit { namespace x3 { template > struct literal_string : parser> { typedef typename Encoding::char_type char_type; typedef Encoding encoding; typedef Attribute attribute_type; static bool const has_attribute = !is_same::value; static bool const handles_container = has_attribute; literal_string(typename add_reference::type str) : str(str) {} template bool parse(Iterator& first, Iterator const& last , Context const& context, unused_type, Attribute_& attr) const { x3::skip_over(first, last, context); return detail::string_parse(str, first, last, attr); } String str; }; namespace standard { inline literal_string string(char const* s) { return literal_string(s); } } using standard::string; namespace extension { template struct as_parser { typedef literal_string< char const*, char_encoding::standard, unused_type> type; typedef type value_type; static type call(char const* s) { return type(s); } }; template struct as_parser : as_parser {}; template struct as_parser { typedef literal_string< wchar_t const*, char_encoding::standard_wide, unused_type> type; typedef type value_type; static type call(wchar_t const* s) { return type(s); } }; template struct as_parser : as_parser {}; } using standard::string; inline literal_string lit(char const* s) { return literal_string(s); } template struct get_info> { typedef std::string result_type; std::string operator()(literal_string const& p) const { return '"' + to_utf8(p.str) + '"'; } }; }}} #endif