diff options
Diffstat (limited to 'boost/spirit/home/x3/string')
-rw-r--r-- | boost/spirit/home/x3/string/detail/no_case_string_parse.hpp | 60 | ||||
-rw-r--r-- | boost/spirit/home/x3/string/detail/string_parse.hpp | 16 | ||||
-rw-r--r-- | boost/spirit/home/x3/string/detail/tst.hpp | 20 | ||||
-rw-r--r-- | boost/spirit/home/x3/string/literal_string.hpp | 162 | ||||
-rw-r--r-- | boost/spirit/home/x3/string/symbols.hpp | 146 | ||||
-rw-r--r-- | boost/spirit/home/x3/string/tst.hpp | 16 | ||||
-rw-r--r-- | boost/spirit/home/x3/string/tst_map.hpp | 12 |
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); } |