summaryrefslogtreecommitdiff
path: root/boost/spirit/home/x3/string
diff options
context:
space:
mode:
Diffstat (limited to 'boost/spirit/home/x3/string')
-rw-r--r--boost/spirit/home/x3/string/detail/no_case_string_parse.hpp60
-rw-r--r--boost/spirit/home/x3/string/detail/string_parse.hpp16
-rw-r--r--boost/spirit/home/x3/string/detail/tst.hpp20
-rw-r--r--boost/spirit/home/x3/string/literal_string.hpp162
-rw-r--r--boost/spirit/home/x3/string/symbols.hpp146
-rw-r--r--boost/spirit/home/x3/string/tst.hpp16
-rw-r--r--boost/spirit/home/x3/string/tst_map.hpp12
7 files changed, 303 insertions, 129 deletions
diff --git a/boost/spirit/home/x3/string/detail/no_case_string_parse.hpp b/boost/spirit/home/x3/string/detail/no_case_string_parse.hpp
new file mode 100644
index 0000000000..6e1bbf4cee
--- /dev/null
+++ b/boost/spirit/home/x3/string/detail/no_case_string_parse.hpp
@@ -0,0 +1,60 @@
+/*=============================================================================
+ 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_NO_CASE_STRING_PARSE_APR_18_2014_1125PM)
+#define BOOST_SPIRIT_X3_NO_CASE_STRING_PARSE_APR_18_2014_1125PM
+
+#include <boost/spirit/home/x3/char/char.hpp>
+#include <boost/spirit/home/x3/support/traits/move_to.hpp>
+
+namespace boost { namespace spirit { namespace x3 { namespace detail
+{
+ template <typename Char, typename Encoding>
+ struct no_case_string
+ {
+ typedef std::basic_string< Char > string_type;
+ typedef typename string_type::const_iterator const_iterator;
+
+ no_case_string(char_type const* str)
+ : lower(str)
+ , upper(str)
+ {
+ typename string_type::iterator loi = lower.begin();
+ typename string_type::iterator upi = upper.begin();
+
+ typedef typename Encoding::char_type encoded_char_type;
+ Encoding encoding;
+ for (; loi != lower.end(); ++loi, ++upi)
+ {
+ *loi = static_cast<char_type>(encoding.tolower(encoded_char_type(*loi)));
+ *upi = static_cast<char_type>(encoding.toupper(encoded_char_type(*upi)));
+ }
+ }
+ string_type lower;
+ string_type upper;
+
+ };
+
+ template <typename String, typename Iterator, typename Attribute>
+ inline bool no_case_string_parse(
+ String const& str
+ , Iterator& first, Iterator const& last, Attribute& attr)
+ {
+ typename String::const_iterator uc_i = str.upper.begin();
+ typename String::const_iterator uc_last = str.upper.end();
+ typename String::const_iterator lc_i = str.lower.begin();
+ Iterator i = first;
+
+ for (; uc_i != uc_last; ++uc_i, ++lc_i, ++i)
+ if (i == last || ((*uc_i != *i) && (*lc_i != *i)))
+ return false;
+ x3::traits::move_to(first, i, attr);
+ first = i;
+ return true;
+ }
+}}}}
+
+#endif
diff --git a/boost/spirit/home/x3/string/detail/string_parse.hpp b/boost/spirit/home/x3/string/detail/string_parse.hpp
index f7a77df804..dd7de67692 100644
--- a/boost/spirit/home/x3/string/detail/string_parse.hpp
+++ b/boost/spirit/home/x3/string/detail/string_parse.hpp
@@ -7,25 +7,21 @@
#if !defined(BOOST_SPIRIT_X3_STRING_PARSE_APR_18_2006_1125PM)
#define BOOST_SPIRIT_X3_STRING_PARSE_APR_18_2006_1125PM
-#if defined(_MSC_VER)
-#pragma once
-#endif
-
#include <boost/spirit/home/x3/support/traits/move_to.hpp>
namespace boost { namespace spirit { namespace x3 { namespace detail
{
- template <typename Char, typename Iterator, typename Attribute>
+ template <typename Char, typename Iterator, typename Attribute, typename CaseCompareFunc>
inline bool string_parse(
Char const* str
- , Iterator& first, Iterator const& last, Attribute& attr)
+ , Iterator& first, Iterator const& last, Attribute& attr, CaseCompareFunc const& compare)
{
Iterator i = first;
Char ch = *str;
for (; !!ch; ++i)
{
- if (i == last || (ch != *i))
+ if (i == last || (compare(ch, *i) != 0))
return false;
ch = *++str;
}
@@ -35,17 +31,17 @@ namespace boost { namespace spirit { namespace x3 { namespace detail
return true;
}
- template <typename String, typename Iterator, typename Attribute>
+ template <typename String, typename Iterator, typename Attribute, typename CaseCompareFunc>
inline bool string_parse(
String const& str
- , Iterator& first, Iterator const& last, Attribute& attr)
+ , Iterator& first, Iterator const& last, Attribute& attr, CaseCompareFunc const& compare)
{
Iterator i = first;
typename String::const_iterator stri = str.begin();
typename String::const_iterator str_last = str.end();
for (; stri != str_last; ++stri, ++i)
- if (i == last || (*stri != *i))
+ if (i == last || (compare(*stri, *i) != 0))
return false;
x3::traits::move_to(first, i, attr);
first = i;
diff --git a/boost/spirit/home/x3/string/detail/tst.hpp b/boost/spirit/home/x3/string/detail/tst.hpp
index df61f4dec7..50f6df6a95 100644
--- a/boost/spirit/home/x3/string/detail/tst.hpp
+++ b/boost/spirit/home/x3/string/detail/tst.hpp
@@ -7,13 +7,8 @@
#if !defined(BOOST_SPIRIT_X3_TST_MARCH_09_2007_0905AM)
#define BOOST_SPIRIT_X3_TST_MARCH_09_2007_0905AM
-#if defined(_MSC_VER)
-#pragma once
-#endif
-
#include <boost/call_traits.hpp>
#include <boost/detail/iterator.hpp>
-#include <boost/foreach.hpp>
#include <boost/assert.hpp>
namespace boost { namespace spirit { namespace x3 { namespace detail
@@ -61,9 +56,9 @@ namespace boost { namespace spirit { namespace x3 { namespace detail
return 0;
}
- template <typename Iterator, typename Filter>
+ template <typename Iterator, typename CaseCompare>
static T*
- find(tst_node* start, Iterator& first, Iterator last, Filter filter)
+ find(tst_node* start, Iterator& first, Iterator last, CaseCompare comp)
{
if (first == last)
return 0;
@@ -75,11 +70,8 @@ namespace boost { namespace spirit { namespace x3 { namespace detail
while (p && i != last)
{
- typename
- boost::detail::iterator_traits<Iterator>::value_type
- c = filter(*i); // filter only the input
-
- if (c == p->id)
+ int32_t c = comp(*i,p->id);
+ if (c == 0)
{
if (p->data)
{
@@ -89,7 +81,7 @@ namespace boost { namespace spirit { namespace x3 { namespace detail
p = p->eq;
i++;
}
- else if (c < p->id)
+ else if (c < 0)
{
p = p->lt;
}
@@ -117,7 +109,7 @@ namespace boost { namespace spirit { namespace x3 { namespace detail
return 0;
tst_node** pp = &start;
- for(;;)
+ for (;;)
{
typename
boost::detail::iterator_traits<Iterator>::value_type
diff --git a/boost/spirit/home/x3/string/literal_string.hpp b/boost/spirit/home/x3/string/literal_string.hpp
index bf05a9a08e..c562721b2e 100644
--- a/boost/spirit/home/x3/string/literal_string.hpp
+++ b/boost/spirit/home/x3/string/literal_string.hpp
@@ -7,13 +7,11 @@
#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 <boost/spirit/home/x3/core/parser.hpp>
#include <boost/spirit/home/x3/core/skip_over.hpp>
#include <boost/spirit/home/x3/string/detail/string_parse.hpp>
+#include <boost/spirit/home/x3/support/no_case.hpp>
+#include <boost/spirit/home/x3/string/detail/no_case_string_parse.hpp>
#include <boost/spirit/home/x3/support/utility/utf8.hpp>
#include <boost/spirit/home/support/char_encoding/ascii.hpp>
#include <boost/spirit/home/support/char_encoding/standard.hpp>
@@ -36,7 +34,7 @@ namespace boost { namespace spirit { namespace x3
!is_same<unused_type, attribute_type>::value;
static bool const handles_container = has_attribute;
- literal_string(typename add_reference<String>::type str)
+ literal_string(typename add_reference< typename add_const<String>::type >::type str)
: str(str)
{}
@@ -45,7 +43,7 @@ namespace boost { namespace spirit { namespace x3
, Context const& context, unused_type, Attribute_& attr) const
{
x3::skip_over(first, last, context);
- return detail::string_parse(str, first, last, attr);
+ return detail::string_parse(str, first, last, attr, get_case_compare<encoding>(context));
}
String str;
@@ -56,19 +54,124 @@ namespace boost { namespace spirit { namespace x3
inline literal_string<char const*, char_encoding::standard>
string(char const* s)
{
- return literal_string<char const*, char_encoding::standard>(s);
+ return { s };
+ }
+
+ inline literal_string<std::basic_string<char>, char_encoding::standard>
+ string(std::basic_string<char> const& s)
+ {
+ return { s };
+ }
+
+ inline literal_string<char const*, char_encoding::standard, unused_type>
+ lit(char const* s)
+ {
+ return { s };
+ }
+
+ template <typename Char>
+ literal_string<Char const*, char_encoding::standard, unused_type>
+ lit(std::basic_string<Char> const& s)
+ {
+ return { s.c_str() };
+ }
+ }
+
+ namespace standard_wide
+ {
+ inline literal_string<wchar_t const*, char_encoding::standard_wide>
+ string(wchar_t const* s)
+ {
+ return { s };
+ }
+
+ inline literal_string<std::basic_string<wchar_t>, char_encoding::standard_wide>
+ string(std::basic_string<wchar_t> const& s)
+ {
+ return { s };
+ }
+
+ inline literal_string<wchar_t const*, char_encoding::standard_wide, unused_type>
+ lit(wchar_t const* s)
+ {
+ return { s };
+ }
+
+ inline literal_string<wchar_t const*, char_encoding::standard_wide, unused_type>
+ lit(std::basic_string<wchar_t> const& s)
+ {
+ return { s.c_str() };
}
}
+
+ namespace ascii
+ {
+ inline literal_string<wchar_t const*, char_encoding::ascii>
+ string(wchar_t const* s)
+ {
+ return { s };
+ }
+
+ inline literal_string<std::basic_string<wchar_t>, char_encoding::ascii>
+ string(std::basic_string<wchar_t> const& s)
+ {
+ return { s };
+ }
+
+ inline literal_string<char const*, char_encoding::ascii, unused_type>
+ lit(char const* s)
+ {
+ return { s };
+ }
+
+ template <typename Char>
+ literal_string<Char const*, char_encoding::ascii, unused_type>
+ lit(std::basic_string<Char> const& s)
+ {
+ return { s.c_str() };
+ }
+ }
+
+ namespace iso8859_1
+ {
+ inline literal_string<wchar_t const*, char_encoding::iso8859_1>
+ string(wchar_t const* s)
+ {
+ return { s };
+ }
+
+ inline literal_string<std::basic_string<wchar_t>, char_encoding::iso8859_1>
+ string(std::basic_string<wchar_t> const& s)
+ {
+ return { s };
+ }
+
+ inline literal_string<char const*, char_encoding::iso8859_1, unused_type>
+ lit(char const* s)
+ {
+ return { s };
+ }
+
+ template <typename Char>
+ literal_string<Char const*, char_encoding::iso8859_1, unused_type>
+ lit(std::basic_string<Char> const& s)
+ {
+ return { s.c_str() };
+ }
+ }
+
using standard::string;
+ using standard::lit;
+ using standard_wide::string;
+ using standard_wide::lit;
namespace extension
{
template <int N>
struct as_parser<char[N]>
{
- typedef
- literal_string<
- char const*, char_encoding::standard, unused_type>
+ typedef literal_string<
+ char const*, char_encoding::standard, unused_type>
type;
typedef type value_type;
@@ -85,9 +188,8 @@ namespace boost { namespace spirit { namespace x3
template <int N>
struct as_parser<wchar_t[N]>
{
- typedef
- literal_string<
- wchar_t const*, char_encoding::standard_wide, unused_type>
+ typedef literal_string<
+ wchar_t const*, char_encoding::standard_wide, unused_type>
type;
typedef type value_type;
@@ -100,14 +202,36 @@ namespace boost { namespace spirit { namespace x3
template <int N>
struct as_parser<wchar_t const[N]> : as_parser<wchar_t[N]> {};
- }
- using standard::string;
+ template <>
+ struct as_parser<char const*>
+ {
+ typedef literal_string<
+ char const*, char_encoding::standard, unused_type>
+ type;
- inline literal_string<char const*, char_encoding::standard, unused_type>
- lit(char const* s)
- {
- return literal_string<char const*, char_encoding::standard, unused_type>(s);
+ typedef type value_type;
+
+ static type call(char const* s)
+ {
+ return type(s);
+ }
+ };
+
+ template <typename Char>
+ struct as_parser< std::basic_string<Char> >
+ {
+ typedef literal_string<
+ Char const*, char_encoding::standard, unused_type>
+ type;
+
+ typedef type value_type;
+
+ static type call(std::basic_string<Char> const& s)
+ {
+ return type(s.c_str());
+ }
+ };
}
template <typename String, typename Encoding, typename Attribute>
diff --git a/boost/spirit/home/x3/string/symbols.hpp b/boost/spirit/home/x3/string/symbols.hpp
index b35a00a121..2d00944be2 100644
--- a/boost/spirit/home/x3/string/symbols.hpp
+++ b/boost/spirit/home/x3/string/symbols.hpp
@@ -8,16 +8,18 @@
#if !defined(BOOST_SPIRIT_X3_SYMBOLS_MARCH_11_2007_1055AM)
#define BOOST_SPIRIT_X3_SYMBOLS_MARCH_11_2007_1055AM
-#if defined(_MSC_VER)
-#pragma once
-#endif
-
#include <boost/spirit/home/x3/core/skip_over.hpp>
#include <boost/spirit/home/x3/core/parser.hpp>
#include <boost/spirit/home/x3/string/tst.hpp>
#include <boost/spirit/home/x3/support/unused.hpp>
#include <boost/spirit/home/x3/support/traits/string_traits.hpp>
#include <boost/spirit/home/x3/support/traits/move_to.hpp>
+#include <boost/spirit/home/x3/support/no_case.hpp>
+
+#include <boost/spirit/home/support/char_encoding/ascii.hpp>
+#include <boost/spirit/home/support/char_encoding/iso8859_1.hpp>
+#include <boost/spirit/home/support/char_encoding/standard.hpp>
+#include <boost/spirit/home/support/char_encoding/standard_wide.hpp>
#include <boost/fusion/include/at.hpp>
#include <boost/range.hpp>
@@ -35,15 +37,14 @@
namespace boost { namespace spirit { namespace x3
{
template <
- typename Char = char
+ typename Encoding
, typename T = unused_type
- , typename Lookup = tst<Char, T>
- , typename Filter = tst_pass_through>
- struct symbols : parser<symbols<Char, T, Lookup, Filter>>
+ , typename Lookup = tst<typename Encoding::char_type, T> >
+ struct symbols_parser : parser<symbols_parser<Encoding, T, Lookup>>
{
- typedef Char char_type; // the character type
+ typedef typename Encoding::char_type char_type; // the character type
+ typedef Encoding encoding;
typedef T value_type; // the value associated with each entry
- typedef symbols<Char, T, Lookup, Filter> this_type;
typedef value_type attribute_type;
static bool const has_attribute =
@@ -51,7 +52,7 @@ namespace boost { namespace spirit { namespace x3
static bool const handles_container =
traits::is_container<attribute_type>::value;
- symbols(std::string const& name = "symbols")
+ symbols_parser(std::string const& name = "symbols")
: add(*this)
, remove(*this)
, lookup(new Lookup())
@@ -59,16 +60,7 @@ namespace boost { namespace spirit { namespace x3
{
}
- symbols(symbols const& syms)
- : add(*this)
- , remove(*this)
- , lookup(syms.lookup)
- , name_(syms.name_)
- {
- }
-
- template <typename Filter_>
- symbols(symbols<Char, T, Lookup, Filter_> const& syms)
+ symbols_parser(symbols_parser const& syms)
: add(*this)
, remove(*this)
, lookup(syms.lookup)
@@ -77,7 +69,7 @@ namespace boost { namespace spirit { namespace x3
}
template <typename Symbols>
- symbols(Symbols const& syms, std::string const& name = "symbols")
+ symbols_parser(Symbols const& syms, std::string const& name = "symbols")
: add(*this)
, remove(*this)
, lookup(new Lookup())
@@ -89,7 +81,7 @@ namespace boost { namespace spirit { namespace x3
}
template <typename Symbols, typename Data>
- symbols(Symbols const& syms, Data const& data
+ symbols_parser(Symbols const& syms, Data const& data
, std::string const& name = "symbols")
: add(*this)
, remove(*this)
@@ -102,43 +94,34 @@ namespace boost { namespace spirit { namespace x3
add(*si++, *di++);
}
- symbols(std::initializer_list<std::pair<Char const*, T>> syms
+ symbols_parser(std::initializer_list<std::pair<char_type const*, T>> syms
, std::string const & name="symbols")
: add(*this)
, remove(*this)
, lookup(new Lookup())
, name_(name)
{
- typedef std::initializer_list<std::pair<Char const*, T>> symbols_t;
+ typedef std::initializer_list<std::pair<char_type const*, T>> symbols_t;
typename range_const_iterator<symbols_t>::type si = boost::begin(syms);
for (;si != boost::end(syms); ++si)
add(si->first, si->second);
}
-
- symbols(std::initializer_list<Char const*> syms
+
+ symbols_parser(std::initializer_list<char_type const*> syms
, std::string const &name="symbols")
: add(*this)
, remove(*this)
, lookup(new Lookup())
, name_(name)
{
- typedef std::initializer_list<Char const*> symbols_t;
+ typedef std::initializer_list<char_type const*> symbols_t;
typename range_const_iterator<symbols_t>::type si = boost::begin(syms);
while (si != boost::end(syms))
add(*si++);
}
- symbols&
- operator=(symbols const& rhs)
- {
- name_ = rhs.name_;
- lookup = rhs.lookup;
- return *this;
- }
-
- template <typename Filter_>
- symbols&
- operator=(symbols<Char, T, Lookup, Filter_> const& rhs)
+ symbols_parser&
+ operator=(symbols_parser const& rhs)
{
name_ = rhs.name_;
lookup = rhs.lookup;
@@ -163,14 +146,14 @@ namespace boost { namespace spirit { namespace x3
template <typename Str>
friend adder const&
- operator+=(symbols& sym, Str const& str)
+ operator+=(symbols_parser& sym, Str const& str)
{
return sym.add(str);
}
template <typename Str>
friend remover const&
- operator-=(symbols& sym, Str const& str)
+ operator-=(symbols_parser& sym, Str const& str)
{
return sym.remove(str);
}
@@ -184,48 +167,48 @@ namespace boost { namespace spirit { namespace x3
template <typename Str>
value_type& at(Str const& str)
{
- return *lookup->add(traits::get_string_begin<Char>(str)
- , traits::get_string_end<Char>(str), T());
+ return *lookup->add(traits::get_string_begin<char_type>(str)
+ , traits::get_string_end<char_type>(str), T());
}
template <typename Iterator>
value_type* prefix_find(Iterator& first, Iterator const& last)
{
- return lookup->find(first, last, Filter());
+ return lookup->find(first, last, case_compare<Encoding>());
}
template <typename Iterator>
value_type const* prefix_find(Iterator& first, Iterator const& last) const
{
- return lookup->find(first, last, Filter());
+ return lookup->find(first, last, case_compare<Encoding>());
}
template <typename Str>
value_type* find(Str const& str)
{
- return find_impl(traits::get_string_begin<Char>(str)
- , traits::get_string_end<Char>(str));
+ return find_impl(traits::get_string_begin<char_type>(str)
+ , traits::get_string_end<char_type>(str));
}
template <typename Str>
value_type const* find(Str const& str) const
{
- return find_impl(traits::get_string_begin<Char>(str)
- , traits::get_string_end<Char>(str));
+ return find_impl(traits::get_string_begin<char_type>(str)
+ , traits::get_string_end<char_type>(str));
}
private:
template <typename Iterator>
value_type* find_impl(Iterator begin, Iterator end)
{
- value_type* r = lookup->find(begin, end, Filter());
+ value_type* r = lookup->find(begin, end, case_compare<Encoding>());
return begin == end ? r : 0;
}
template <typename Iterator>
value_type const* find_impl(Iterator begin, Iterator end) const
{
- value_type const* r = lookup->find(begin, end, Filter());
+ value_type const* r = lookup->find(begin, end, case_compare<Encoding>());
return begin == end ? r : 0;
}
@@ -237,7 +220,7 @@ namespace boost { namespace spirit { namespace x3
x3::skip_over(first, last, context);
if (value_type* val_ptr
- = lookup->find(first, last, Filter()))
+ = lookup->find(first, last, get_case_compare<Encoding>(context)))
{
x3::traits::move_to(*val_ptr, attr);
return true;
@@ -259,7 +242,7 @@ namespace boost { namespace spirit { namespace x3
template <typename, typename = unused_type, typename = unused_type>
struct result { typedef adder const& type; };
- adder(symbols& sym)
+ adder(symbols_parser& sym)
: sym(sym)
{
}
@@ -276,8 +259,8 @@ namespace boost { namespace spirit { namespace x3
adder const&
operator()(Str const& s, T const& val = T()) const
{
- sym.lookup->add(traits::get_string_begin<Char>(s)
- , traits::get_string_end<Char>(s), val);
+ sym.lookup->add(traits::get_string_begin<char_type>(s)
+ , traits::get_string_end<char_type>(s), val);
return *this;
}
@@ -285,12 +268,12 @@ namespace boost { namespace spirit { namespace x3
adder const&
operator,(Str const& s) const
{
- sym.lookup->add(traits::get_string_begin<Char>(s)
- , traits::get_string_end<Char>(s), T());
+ sym.lookup->add(traits::get_string_begin<char_type>(s)
+ , traits::get_string_end<char_type>(s), T());
return *this;
}
- symbols& sym;
+ symbols_parser& sym;
};
struct remover
@@ -298,7 +281,7 @@ namespace boost { namespace spirit { namespace x3
template <typename, typename = unused_type, typename = unused_type>
struct result { typedef remover const& type; };
- remover(symbols& sym)
+ remover(symbols_parser& sym)
: sym(sym)
{
}
@@ -315,8 +298,8 @@ namespace boost { namespace spirit { namespace x3
remover const&
operator()(Str const& s) const
{
- sym.lookup->remove(traits::get_string_begin<Char>(s)
- , traits::get_string_end<Char>(s));
+ sym.lookup->remove(traits::get_string_begin<char_type>(s)
+ , traits::get_string_end<char_type>(s));
return *this;
}
@@ -324,12 +307,12 @@ namespace boost { namespace spirit { namespace x3
remover const&
operator,(Str const& s) const
{
- sym.lookup->remove(traits::get_string_begin<Char>(s)
- , traits::get_string_end<Char>(s));
+ sym.lookup->remove(traits::get_string_begin<char_type>(s)
+ , traits::get_string_end<char_type>(s));
return *this;
}
- symbols& sym;
+ symbols_parser& sym;
};
adder add;
@@ -338,17 +321,44 @@ namespace boost { namespace spirit { namespace x3
std::string name_;
};
- template <typename Char, typename T, typename Lookup, typename Filter>
- struct get_info<symbols<Char, T, Lookup, Filter>>
+ template <typename Encoding, typename T, typename Lookup>
+ struct get_info<symbols_parser<Encoding, T, Lookup>>
{
typedef std::string result_type;
- result_type operator()(symbols< Char, T
- , Lookup, Filter
+ result_type operator()(symbols_parser< Encoding, T
+ , Lookup
> const& symbols) const
{
return symbols.name();
}
};
+
+ namespace standard
+ {
+ template <typename T = unused_type>
+ using symbols = symbols_parser<char_encoding::standard, T>;
+ }
+
+ using standard::symbols;
+
+ namespace standard_wide
+ {
+ template <typename T = unused_type>
+ using symbols = symbols_parser<char_encoding::standard_wide, T>;
+ }
+
+ namespace ascii
+ {
+ template <typename T = unused_type>
+ using symbols = symbols_parser<char_encoding::ascii, T>;
+ }
+
+ namespace iso8859_1
+ {
+ template <typename T = unused_type>
+ using symbols = symbols_parser<char_encoding::iso8859_1, T>;
+ }
+
}}}
#if defined(BOOST_MSVC)
diff --git a/boost/spirit/home/x3/string/tst.hpp b/boost/spirit/home/x3/string/tst.hpp
index 5379b032be..704ef92c70 100644
--- a/boost/spirit/home/x3/string/tst.hpp
+++ b/boost/spirit/home/x3/string/tst.hpp
@@ -7,10 +7,6 @@
#if !defined(BOOST_SPIRIT_X3_TST_JUNE_03_2007_1031AM)
#define BOOST_SPIRIT_X3_TST_JUNE_03_2007_1031AM
-#if defined(_MSC_VER)
-#pragma once
-#endif
-
#include <boost/spirit/home/x3/string/detail/tst.hpp>
namespace boost { namespace spirit { namespace x3
@@ -52,17 +48,17 @@ namespace boost { namespace spirit { namespace x3
return assign(rhs);
}
- template <typename Iterator, typename Filter>
- T* find(Iterator& first, Iterator last, Filter filter) const
+ template <typename Iterator, typename CaseCompare>
+ T* find(Iterator& first, Iterator last, CaseCompare caseCompare) const
{
- return node::find(root, first, last, filter);
+ return node::find(root, first, last, caseCompare);
}
- template <typename Iterator>
+ /*template <typename Iterator>
T* find(Iterator& first, Iterator last) const
{
- return find(first, last, tst_pass_through());
- }
+ return find(first, last, case_compare<tst_pass_through());
+ }*/
template <typename Iterator>
T* add(
diff --git a/boost/spirit/home/x3/string/tst_map.hpp b/boost/spirit/home/x3/string/tst_map.hpp
index 2501324de6..11fb135449 100644
--- a/boost/spirit/home/x3/string/tst_map.hpp
+++ b/boost/spirit/home/x3/string/tst_map.hpp
@@ -7,10 +7,6 @@
#if !defined(BOOST_SPIRIT_X3_TST_MAP_JUNE_03_2007_1143AM)
#define BOOST_SPIRIT_X3_TST_MAP_JUNE_03_2007_1143AM
-#if defined(_MSC_VER)
-#pragma once
-#endif
-
#include <boost/spirit/home/x3/string/detail/tst.hpp>
#include <unordered_map>
#include <boost/pool/object_pool.hpp>
@@ -129,7 +125,7 @@ namespace boost { namespace spirit { namespace x3
void clear()
{
- BOOST_FOREACH(typename map_type::value_type& x, map)
+ for (typename map_type::value_type& x : map)
{
node::destruct_node(x.second.root, this);
if (x.second.data)
@@ -141,7 +137,7 @@ namespace boost { namespace spirit { namespace x3
template <typename F>
void for_each(F f) const
{
- BOOST_FOREACH(typename map_type::value_type const& x, map)
+ for (typename map_type::value_type const& x : map)
{
std::basic_string<Char> s(1, x.first);
node::for_each(x.second.root, s, f);
@@ -164,7 +160,7 @@ namespace boost { namespace spirit { namespace x3
void copy(tst_map const& rhs)
{
- BOOST_FOREACH(typename map_type::value_type const& x, rhs.map)
+ for (typename map_type::value_type const& x : rhs.map)
{
map_data xx = {node::clone_node(x.second.root, this), 0};
if (x.second.data)
@@ -177,7 +173,7 @@ namespace boost { namespace spirit { namespace x3
{
if (this != &rhs)
{
- BOOST_FOREACH(typename map_type::value_type& x, map)
+ for (typename map_type::value_type& x : map)
{
node::destruct_node(x.second.root, this);
}