diff options
author | Tobias Markmann <tm@ayena.de> | 2014-10-19 20:22:58 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2014-10-20 13:49:33 (GMT) |
commit | 6b22dfcf59474dd016a0355a3102a1dd3692d92c (patch) | |
tree | 2b1fd33be433a91e81fee84fdc2bf1b52575d934 /3rdParty/Boost/src/boost/spirit/home/support | |
parent | 38b0cb785fea8eae5e48fae56440695fdfd10ee1 (diff) | |
download | swift-contrib-6b22dfcf59474dd016a0355a3102a1dd3692d92c.zip swift-contrib-6b22dfcf59474dd016a0355a3102a1dd3692d92c.tar.bz2 |
Update Boost in 3rdParty to version 1.56.0.
This updates Boost in our 3rdParty directory to version 1.56.0.
Updated our update.sh script to stop on error.
Changed error reporting in SwiftTools/CrashReporter.cpp to SWIFT_LOG due to
missing include of <iostream> with newer Boost.
Change-Id: I4b35c77de951333979a524097f35f5f83d325edc
Diffstat (limited to '3rdParty/Boost/src/boost/spirit/home/support')
29 files changed, 263 insertions, 371 deletions
diff --git a/3rdParty/Boost/src/boost/spirit/home/support/assert_msg.hpp b/3rdParty/Boost/src/boost/spirit/home/support/assert_msg.hpp index db36072..f1433da 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/assert_msg.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/assert_msg.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser +// Copyright (c) 2001-2013 Hartmut Kaiser // // 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) @@ -10,12 +10,21 @@ #pragma once #endif -// Allow to work around the MPL problem in BOOST_MPL_ASSERT_MSG generating -// multiple definition linker errors for certain compilers (VC++) -#if BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG != 0 +#include <boost/config.hpp> + +// Work around the MPL problem in BOOST_MPL_ASSERT_MSG generating +// multiple definition linker errors for certain compilers (VC++ 8). +// BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG can also be defined by user. +#if !defined(BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG) +# if defined(BOOST_MSVC) && BOOST_MSVC < 1500 +# define BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG 1 +# endif +#endif + +#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) || BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG != 0 #include <boost/static_assert.hpp> #define BOOST_SPIRIT_ASSERT_MSG(Cond, Msg, Types) \ - BOOST_STATIC_ASSERT(Cond) + BOOST_STATIC_ASSERT_MSG(Cond, # Msg) #else #include <boost/mpl/assert.hpp> #define BOOST_SPIRIT_ASSERT_MSG(Cond, Msg, Types) \ @@ -24,8 +33,22 @@ #define BOOST_SPIRIT_ASSERT_MATCH(Domain, Expr) \ BOOST_SPIRIT_ASSERT_MSG(( \ - boost::spirit::traits::matches<Domain, Expr>::value \ + boost::spirit::traits::matches< Domain, Expr >::value \ ), error_invalid_expression, (Expr)) +// GCC 4.7 will overeagerly instantiate static_asserts in template functions, +// if the assert condition does not depend on template parameters +// (see https://svn.boost.org/trac/boost/ticket/8381). +// There are places where we want to use constant false as the condition in +// template functions to indicate that these function overloads should never +// be called. This allows to generate better error messages. To solve this +// problem we make the condition dependent on the template argument and use +// the following macro in such places. +#include <boost/type_traits/is_same.hpp> + +#define BOOST_SPIRIT_ASSERT_FAIL(TemplateParam, Msg, Types) \ + BOOST_SPIRIT_ASSERT_MSG((!boost::is_same< \ + TemplateParam, TemplateParam >::value), Msg, Types) + #endif diff --git a/3rdParty/Boost/src/boost/spirit/home/support/attributes.hpp b/3rdParty/Boost/src/boost/spirit/home/support/attributes.hpp index 48bff06..163f11c 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/attributes.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/attributes.hpp @@ -1,6 +1,6 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser + Copyright (c) 2001-2012 Hartmut Kaiser 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) @@ -202,6 +202,19 @@ namespace boost { namespace spirit { namespace traits struct is_weak_substitute<T, optional<Expected> > : is_weak_substitute<T, Expected> {}; +#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) + template <typename T, typename Expected> + struct is_weak_substitute<boost::variant<T>, Expected> + : is_weak_substitute<T, Expected> + {}; + + template <typename T0, typename T1, typename ...TN, typename Expected> + struct is_weak_substitute<boost::variant<T0, T1, TN...>, + Expected> + : mpl::bool_<is_weak_substitute<T0, Expected>::type::value && + is_weak_substitute<boost::variant<T1, TN...>, Expected>::type::value> + {}; +#else #define BOOST_SPIRIT_IS_WEAK_SUBSTITUTE(z, N, _) \ is_weak_substitute<BOOST_PP_CAT(T, N), Expected>::type::value && \ /***/ @@ -220,6 +233,7 @@ namespace boost { namespace spirit { namespace traits {}; #undef BOOST_SPIRIT_IS_WEAK_SUBSTITUTE +#endif template <typename T> struct is_weak_substitute<T, T @@ -516,7 +530,30 @@ namespace boost { namespace spirit { namespace traits { if (!val) return 0; - return val.get(); + return traits::size(val.get()); + } + }; + + namespace detail + { + struct attribute_size_visitor : static_visitor<std::size_t> + { + template <typename T> + std::size_t operator()(T const& val) const + { + return spirit::traits::size(val); + } + }; + } + + template <BOOST_VARIANT_ENUM_PARAMS(typename T)> + struct attribute_size<variant<BOOST_VARIANT_ENUM_PARAMS(T)> > + { + typedef std::size_t type; + + static type call(variant<BOOST_VARIANT_ENUM_PARAMS(T)> const& val) + { + return apply_visitor(detail::attribute_size_visitor(), val); } }; @@ -748,7 +785,7 @@ namespace boost { namespace spirit { namespace traits }; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template <typename Element> typename result<element_attribute(Element)>::type operator()(Element&&) const; @@ -1158,8 +1195,8 @@ namespace boost { namespace spirit { namespace traits template <typename Out> struct print_fusion_sequence { - print_fusion_sequence(Out& out) - : out(out), is_first(true) {} + print_fusion_sequence(Out& out_) + : out(out_), is_first(true) {} typedef void result_type; @@ -1181,7 +1218,7 @@ namespace boost { namespace spirit { namespace traits template <typename Out> struct print_visitor : static_visitor<> { - print_visitor(Out& out) : out(out) {} + print_visitor(Out& out_) : out(out_) {} template <typename T> void operator()(T const& val) const diff --git a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp index 9b8a72f..8bd6c11 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/ascii.hpp @@ -188,7 +188,7 @@ namespace boost { namespace spirit { namespace char_encoding return isascii_(ch); } - static int + static bool isalnum(int ch) { BOOST_ASSERT(isascii_(ch)); @@ -196,78 +196,78 @@ namespace boost { namespace spirit { namespace char_encoding || (ascii_char_types[ch] & BOOST_CC_DIGIT); } - static int + static bool isalpha(int ch) { BOOST_ASSERT(isascii_(ch)); - return (ascii_char_types[ch] & BOOST_CC_ALPHA); + return (ascii_char_types[ch] & BOOST_CC_ALPHA) ? true : false; } - static int + static bool isdigit(int ch) { BOOST_ASSERT(isascii_(ch)); - return (ascii_char_types[ch] & BOOST_CC_DIGIT); + return (ascii_char_types[ch] & BOOST_CC_DIGIT) ? true : false; } - static int + static bool isxdigit(int ch) { BOOST_ASSERT(isascii_(ch)); - return (ascii_char_types[ch] & BOOST_CC_XDIGIT); + return (ascii_char_types[ch] & BOOST_CC_XDIGIT) ? true : false; } - static int + static bool iscntrl(int ch) { BOOST_ASSERT(isascii_(ch)); - return (ascii_char_types[ch] & BOOST_CC_CTRL); + return (ascii_char_types[ch] & BOOST_CC_CTRL) ? true : false; } - static int + static bool isgraph(int ch) { return ('\x21' <= ch && ch <= '\x7e'); } - static int + static bool islower(int ch) { BOOST_ASSERT(isascii_(ch)); - return (ascii_char_types[ch] & BOOST_CC_LOWER); + return (ascii_char_types[ch] & BOOST_CC_LOWER) ? true : false; } - static int + static bool isprint(int ch) { return ('\x20' <= ch && ch <= '\x7e'); } - static int + static bool ispunct(int ch) { BOOST_ASSERT(isascii_(ch)); - return (ascii_char_types[ch] & BOOST_CC_PUNCT); + return (ascii_char_types[ch] & BOOST_CC_PUNCT) ? true : false; } - static int + static bool isspace(int ch) { BOOST_ASSERT(isascii_(ch)); - return (ascii_char_types[ch] & BOOST_CC_SPACE); + return (ascii_char_types[ch] & BOOST_CC_SPACE) ? true : false; } - static int + static bool isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch) { return ('\x09' == ch || '\x20' == ch); } - static int + static bool isupper(int ch) { BOOST_ASSERT(isascii_(ch)); - return (ascii_char_types[ch] & BOOST_CC_UPPER); + return (ascii_char_types[ch] & BOOST_CC_UPPER) ? true : false; } /////////////////////////////////////////////////////////////////////// diff --git a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/iso8859_1.hpp b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/iso8859_1.hpp index 37d2e6f..b2b5dd1 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/iso8859_1.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/iso8859_1.hpp @@ -584,7 +584,7 @@ namespace boost { namespace spirit { namespace char_encoding return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) ? true : false; } - static int + static bool isalnum(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); @@ -592,78 +592,78 @@ namespace boost { namespace spirit { namespace char_encoding || (iso8859_1_char_types[ch] & BOOST_CC_DIGIT); } - static int + static bool isalpha(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); - return (iso8859_1_char_types[ch] & BOOST_CC_ALPHA); + return (iso8859_1_char_types[ch] & BOOST_CC_ALPHA) ? true : false; } - static int + static bool isdigit(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); - return (iso8859_1_char_types[ch] & BOOST_CC_DIGIT); + return (iso8859_1_char_types[ch] & BOOST_CC_DIGIT) ? true : false; } - static int + static bool isxdigit(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); - return (iso8859_1_char_types[ch] & BOOST_CC_XDIGIT); + return (iso8859_1_char_types[ch] & BOOST_CC_XDIGIT) ? true : false; } - static int + static bool iscntrl(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); - return (iso8859_1_char_types[ch] & BOOST_CC_CTRL); + return (iso8859_1_char_types[ch] & BOOST_CC_CTRL) ? true : false; } - static int + static bool isgraph(int ch) { return ('\x21' <= ch && ch <= '\x7e') || ('\xa1' <= ch && ch <= '\xff'); } - static int + static bool islower(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); - return (iso8859_1_char_types[ch] & BOOST_CC_LOWER); + return (iso8859_1_char_types[ch] & BOOST_CC_LOWER) ? true : false; } - static int + static bool isprint(int ch) { return ('\x20' <= ch && ch <= '\x7e') || ('\xa0' <= ch && ch <= '\xff'); } - static int + static bool ispunct(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); - return (iso8859_1_char_types[ch] & BOOST_CC_PUNCT); + return (iso8859_1_char_types[ch] & BOOST_CC_PUNCT) ? true : false; } - static int + static bool isspace(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); - return (iso8859_1_char_types[ch] & BOOST_CC_SPACE); + return (iso8859_1_char_types[ch] & BOOST_CC_SPACE) ? true : false; } - static int + static bool isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch) { return ('\x09' == ch || '\x20' == ch || '\xa0' == ch); } - static int + static bool isupper(int ch) { BOOST_ASSERT(0 == (ch & ~UCHAR_MAX)); - return (iso8859_1_char_types[ch] & BOOST_CC_UPPER); + return (iso8859_1_char_types[ch] & BOOST_CC_UPPER) ? true : false; } /////////////////////////////////////////////////////////////////////////// diff --git a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/standard.hpp b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/standard.hpp index c32a9e7..fb307ce 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/standard.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/standard.hpp @@ -38,81 +38,82 @@ namespace boost { namespace spirit { namespace char_encoding return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) ? true : false; } - static int + static bool isalnum(int ch) { - return std::isalnum(ch); + return std::isalnum(ch) ? true : false; } - static int + static bool isalpha(int ch) { - return std::isalpha(ch); + return std::isalpha(ch) ? true : false; } - static int + static bool isdigit(int ch) { - return std::isdigit(ch); + return std::isdigit(ch) ? true : false; } - static int + static bool isxdigit(int ch) { - return std::isxdigit(ch); + return std::isxdigit(ch) ? true : false; } - static int + static bool iscntrl(int ch) { - return std::iscntrl(ch); + return std::iscntrl(ch) ? true : false; } - static int + static bool isgraph(int ch) { - return std::isgraph(ch); + return std::isgraph(ch) ? true : false; } - static int + static bool islower(int ch) { - return std::islower(ch); + return std::islower(ch) ? true : false; } - static int + static bool isprint(int ch) { - return std::isprint(ch); + return std::isprint(ch) ? true : false; } - static int + static bool ispunct(int ch) { - return std::ispunct(ch); + return std::ispunct(ch) ? true : false; } - static int + static bool isspace(int ch) { - return std::isspace(ch); + return std::isspace(ch) ? true : false; } - static int + static bool isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch) { return (ch == ' ' || ch == '\t'); } - static int + static bool isupper(int ch) { - return std::isupper(ch); + return std::isupper(ch) ? true : false; } /////////////////////////////////////////////////////////////////////////////// // Simple character conversions /////////////////////////////////////////////////////////////////////////////// + static int tolower(int ch) { diff --git a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/standard_wide.hpp b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/standard_wide.hpp index 99c918c..515a388 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/standard_wide.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/standard_wide.hpp @@ -154,6 +154,10 @@ namespace boost { namespace spirit { namespace char_encoding return (ch == L' ' || ch == L'\t'); } + /////////////////////////////////////////////////////////////////////// + // Simple character conversions + /////////////////////////////////////////////////////////////////////// + static wchar_t tolower(wchar_t ch) { diff --git a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/unicode.hpp b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/unicode.hpp index 9febf7e..b5ec3e6 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/unicode.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/unicode.hpp @@ -100,7 +100,7 @@ namespace boost { namespace spirit { namespace char_encoding return ucd::is_white_space(ch); } - static int + static bool isblank BOOST_PREVENT_MACRO_SUBSTITUTION (char_type ch) { return ucd::is_blank(ch); diff --git a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/unicode/query.hpp b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/unicode/query.hpp index 3a0526c..370ab67 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/unicode/query.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/char_encoding/unicode/query.hpp @@ -284,7 +284,7 @@ namespace boost { namespace spirit { namespace ucd inline properties::script get_script(::boost::uint32_t ch) { - return static_cast<properties::script>(detail::script_lookup(ch) & 0x3F); + return static_cast<properties::script>(detail::script_lookup(ch) & 0x7F); } inline ::boost::uint32_t to_lowercase(::boost::uint32_t ch) diff --git a/3rdParty/Boost/src/boost/spirit/home/support/container.hpp b/3rdParty/Boost/src/boost/spirit/home/support/container.hpp index 7f491aa..5e154cd 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/container.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/container.hpp @@ -59,6 +59,19 @@ namespace boost { namespace spirit { namespace traits : is_container<T> {}; +#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) + template<typename T> + struct is_container<boost::variant<T> > + : is_container<T> + {}; + + template<typename T0, typename T1, typename ...TN> + struct is_container<boost::variant<T0, T1, TN...> > + : mpl::bool_<is_container<T0>::value || + is_container<boost::variant<T1, TN...> >::value> + {}; + +#else #define BOOST_SPIRIT_IS_CONTAINER(z, N, data) \ is_container<BOOST_PP_CAT(T, N)>::value || \ /***/ @@ -76,6 +89,7 @@ namespace boost { namespace spirit { namespace traits {}; #undef BOOST_SPIRIT_IS_CONTAINER +#endif template <typename T, typename Enable/* = void*/> struct is_iterator_range @@ -238,7 +252,7 @@ namespace boost { namespace spirit { namespace traits static bool is_valid(boost::optional<T> const& val) { - return val; + return !!val; } }; diff --git a/3rdParty/Boost/src/boost/spirit/home/support/context.hpp b/3rdParty/Boost/src/boost/spirit/home/support/context.hpp index b728b4f..ada873a 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/context.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/context.hpp @@ -98,7 +98,7 @@ namespace boost { namespace spirit typedef Locals locals_type; context(typename Attributes::car_type attribute) - : attributes(attribute, fusion::nil()), locals() {} + : attributes(attribute, fusion::nil_()), locals() {} template <typename Args, typename Context> context( @@ -116,8 +116,8 @@ namespace boost { namespace spirit ) , locals() {} - context(Attributes const& attributes) - : attributes(attributes), locals() {} + context(Attributes const& attributes_) + : attributes(attributes_), locals() {} Attributes attributes; // The attributes Locals locals; // Local variables diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/as_variant.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/as_variant.hpp index e2fe18d..9312042 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/as_variant.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/as_variant.hpp @@ -23,6 +23,7 @@ #include <boost/mpl/push_back.hpp> #include <boost/mpl/equal_to.hpp> #include <boost/mpl/contains.hpp> +#include <boost/mpl/limits/list.hpp> #include <boost/type_traits/is_same.hpp> namespace boost { namespace spirit { namespace detail @@ -30,6 +31,8 @@ namespace boost { namespace spirit { namespace detail template <int size> struct as_variant_impl; +#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) +#else template <> struct as_variant_impl<0> { @@ -39,6 +42,7 @@ namespace boost { namespace spirit { namespace detail typedef variant<> type; }; }; +#endif #define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \ @@ -53,7 +57,13 @@ namespace boost { namespace spirit { namespace detail BOOST_PP_CAT(T, n); #define BOOST_PP_FILENAME_1 <boost/spirit/home/support/detail/as_variant.hpp> + +#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) +#define BOOST_PP_ITERATION_LIMITS (1, BOOST_MPL_LIMIT_LIST_SIZE) +#else #define BOOST_PP_ITERATION_LIMITS (1, BOOST_VARIANT_LIMIT_TYPES) +#endif + #include BOOST_PP_ITERATE() #undef BOOST_FUSION_NEXT_ITERATOR diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/hold_any.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/hold_any.hpp index 4332fa2..f9a3ff1 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/hold_any.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/hold_any.hpp @@ -98,7 +98,6 @@ namespace boost { namespace spirit } static void move(void* const* src, void** dest) { - reinterpret_cast<T*>(dest)->~T(); *reinterpret_cast<T*>(dest) = *reinterpret_cast<T const*>(src); } @@ -144,7 +143,6 @@ namespace boost { namespace spirit } static void move(void* const* src, void** dest) { - (*reinterpret_cast<T**>(dest))->~T(); **reinterpret_cast<T**>(dest) = **reinterpret_cast<T* const*>(src); } @@ -300,11 +298,25 @@ namespace boost { namespace spirit } // assignment operator +#ifdef BOOST_HAS_RVALUE_REFS + template <typename T> + basic_hold_any& operator=(T&& x) + { + return assign(std::forward<T>(x)); + } +#else + template <typename T> + basic_hold_any& operator=(T& x) + { + return assign(x); + } + template <typename T> basic_hold_any& operator=(T const& x) { return assign(x); } +#endif // utility functions basic_hold_any& swap(basic_hold_any& x) @@ -405,15 +417,6 @@ namespace boost { namespace spirit { typedef BOOST_DEDUCED_TYPENAME remove_reference<T>::type nonref; -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // If 'nonref' is still reference type, it means the user has not - // specialized 'remove_reference'. - - // Please use BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION macro - // to generate specialization of remove_reference for your class - // See type traits library documentation for details - BOOST_STATIC_ASSERT(!is_reference<nonref>::value); -#endif nonref* result = any_cast<nonref>(&operand); if(!result) @@ -426,11 +429,6 @@ namespace boost { namespace spirit { typedef BOOST_DEDUCED_TYPENAME remove_reference<T>::type nonref; -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // The comment in the above version of 'any_cast' explains when this - // assert is fired and what to do. - BOOST_STATIC_ASSERT(!is_reference<nonref>::value); -#endif return any_cast<nonref const&>(const_cast<basic_hold_any<Char> &>(operand)); } diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/is_spirit_tag.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/is_spirit_tag.hpp index 73269e2..e8f9f6d 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/is_spirit_tag.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/is_spirit_tag.hpp @@ -11,10 +11,6 @@ #pragma once #endif -#ifndef BOOST_SPIRIT_USE_PHOENIX_V3 -#define BOOST_SPIRIT_IS_TAG() -#else #define BOOST_SPIRIT_IS_TAG() typedef void is_spirit_tag; -#endif #endif diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/debug.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/debug.hpp index 23cda87..36ee1bb 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/debug.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/debug.hpp @@ -31,11 +31,7 @@ public: const CharT *ptr_ = in_.c_str (); std::size_t size_ = in_.size (); -#if defined _MSC_VER && _MSC_VER <= 1200 - out_.erase (); -#else out_.clear (); -#endif while (size_) { diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/generator.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/generator.hpp index 49bea2f..daa06e7 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/generator.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/generator.hpp @@ -12,6 +12,7 @@ #include "partition/charset.hpp" #include "partition/equivset.hpp" #include <memory> +#include <limits> #include "parser/tree/node.hpp" #include "parser/parser.hpp" #include "containers/ptr_list.hpp" @@ -185,10 +186,10 @@ protected: while (regex_iter_ != regex_iter_end_) { // re-declare var, otherwise we perform an assignment..! - const typename rules::string ®ex_ = *regex_iter_; + const typename rules::string ®ex2_ = *regex_iter_; - root_ = parser::parse (regex_.c_str (), - regex_.c_str () + regex_.size (), *ids_iter_, + root_ = parser::parse (regex2_.c_str (), + regex2_.c_str () + regex2_.size (), *ids_iter_, *unique_ids_iter_, *states_iter_, rules_.flags (), rules_.locale (), node_ptr_vector_, macromap_, token_map_, internals_._seen_BOL_assertion, @@ -336,16 +337,16 @@ protected: equiv_end_ = equivset_->_index_vector.end (); equiv_iter_ != equiv_end_; ++equiv_iter_) { - const std::size_t index_ = *equiv_iter_; + const std::size_t equiv_index_ = *equiv_iter_; - if (index_ == bol_token) + if (equiv_index_ == bol_token) { if (ptr_[eol_index] == 0) { ptr_[bol_index] = transition_; } } - else if (index_ == eol_token) + else if (equiv_index_ == eol_token) { if (ptr_[bol_index] == 0) { @@ -354,7 +355,7 @@ protected: } else { - ptr_[index_ + dfa_offset] = transition_; + ptr_[equiv_index_ + dfa_offset] = transition_; } } } @@ -560,7 +561,12 @@ protected: if (token_._negated) { - CharT curr_char_ = sizeof (CharT) == 1 ? -128 : 0; + // $$$ FIXME JDG July 2014 $$$ + // this code is problematic on platforms where wchar_t is signed + // with min generating negative numbers. This crashes with BAD_ACCESS + // because of the vector index below: + // ptr_[static_cast<typename Traits::index_type>(curr_char_)] + CharT curr_char_ = 0; // (std::numeric_limits<CharT>::min)(); std::size_t i_ = 0; while (curr_ < chars_end_) diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/size_t.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/size_t.hpp index 349aa6d..449ff4d 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/size_t.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/size_t.hpp @@ -8,14 +8,6 @@ #include <stddef.h> // ptrdiff_t -#if defined _MSC_VER && _MSC_VER <= 1200 -namespace std -{ - using ::ptrdiff_t; - using ::size_t; -} -#else #include <string> -#endif #endif diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/state_machine.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/state_machine.hpp index e09e991..46e50c9 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/state_machine.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/state_machine.hpp @@ -29,11 +29,7 @@ public: class iterator { public: -#if defined _MSC_VER && _MSC_VER <= 1200 - friend basic_state_machine; -#else friend class basic_state_machine; -#endif struct data { @@ -225,11 +221,7 @@ public: } }; -#if defined _MSC_VER && _MSC_VER <= 1200 - friend iterator; -#else friend class iterator; -#endif basic_state_machine () { @@ -365,7 +357,7 @@ private: { const std::size_t col_ = lu_->at (alpha_index_); - if (col_ != dead_state_index) + if (col_ != static_cast<std::size_t>(dead_state_index)) { chars_[col_ - dfa_offset] += static_cast<CharT> (alpha_index_); diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/string_token.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/string_token.hpp index 6bfa6ff..dd58c98 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/string_token.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/lexer/string_token.hpp @@ -10,6 +10,7 @@ #include "size_t.hpp" #include "consts.hpp" // num_chars, num_wchar_ts #include <string> +#include <limits> namespace boost { @@ -55,11 +56,7 @@ struct basic_string_token if (_charset.length () == max_chars_) { _negated = !_negated; -#if defined _MSC_VER && _MSC_VER <= 1200 - _charset.erase (); -#else _charset.clear (); -#endif } else if (_charset.length () > max_chars_ / 2) { @@ -71,7 +68,7 @@ struct basic_string_token { const std::size_t max_chars_ = sizeof (CharT) == 1 ? num_chars : num_wchar_ts; - CharT curr_char_ = sizeof (CharT) == 1 ? -128 : 0; + CharT curr_char_ = (std::numeric_limits<CharT>::min)(); string temp_; const CharT *curr_ = _charset.c_str (); const CharT *chars_end_ = curr_ + _charset.size (); @@ -126,11 +123,7 @@ struct basic_string_token void clear () { _negated = false; -#if defined _MSC_VER && _MSC_VER <= 1200 - _charset.erase (); -#else - _charset.clear (); -#endif + _charset.clear (); } void intersect (basic_string_token &rhs_, basic_string_token &overlap_) diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/make_cons.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/make_cons.hpp index cbbb73b..0d6b0ae 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/make_cons.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/make_cons.hpp @@ -42,11 +42,10 @@ namespace boost { namespace spirit { namespace detail namespace result_of { - template <typename Car, typename Cdr = fusion::nil> + template <typename Car, typename Cdr = fusion::nil_> struct make_cons { - typedef typename as_meta_element<Car>::type car_type; - typedef typename fusion::cons<car_type, Cdr> type; + typedef typename as_meta_element<Car>::type car_type; typedef typename fusion::cons<car_type, Cdr> type; }; } diff --git a/3rdParty/Boost/src/boost/spirit/home/support/detail/scoped_enum_emulation.hpp b/3rdParty/Boost/src/boost/spirit/home/support/detail/scoped_enum_emulation.hpp index 70979a6..1b35043 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/detail/scoped_enum_emulation.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/detail/scoped_enum_emulation.hpp @@ -17,8 +17,8 @@ #if BOOST_VERSION >= 104000 # include <boost/detail/scoped_enum_emulation.hpp> #else -# if !defined(BOOST_NO_SCOPED_ENUMS) -# define BOOST_NO_SCOPED_ENUMS +# if !defined(BOOST_NO_CXX11_SCOPED_ENUMS) +# define BOOST_NO_CXX11_SCOPED_ENUMS # endif # define BOOST_SCOPED_ENUM_START(name) struct name { enum enum_type # define BOOST_SCOPED_ENUM_END }; diff --git a/3rdParty/Boost/src/boost/spirit/home/support/info.hpp b/3rdParty/Boost/src/boost/spirit/home/support/info.hpp index ff523ab..9b991ac 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/info.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/info.hpp @@ -28,11 +28,11 @@ namespace boost { namespace spirit // for uniformity. struct info { - struct nil {}; + struct nil_ {}; typedef boost::variant< - nil + nil_ , utf8_string , recursive_wrapper<info> , recursive_wrapper<std::pair<info, info> > @@ -40,30 +40,30 @@ namespace boost { namespace spirit > value_type; - explicit info(utf8_string const& tag) - : tag(tag), value(nil()) {} + explicit info(utf8_string const& tag_) + : tag(tag_), value(nil_()) {} template <typename T> - info(utf8_string const& tag, T const& value) - : tag(tag), value(value) {} + info(utf8_string const& tag_, T const& value_) + : tag(tag_), value(value_) {} - info(utf8_string const& tag, char value) - : tag(tag), value(utf8_string(1, value)) {} + info(utf8_string const& tag_, char value_) + : tag(tag_), value(utf8_string(1, value_)) {} - info(utf8_string const& tag, wchar_t value) - : tag(tag), value(to_utf8(value)) {} + info(utf8_string const& tag_, wchar_t value_) + : tag(tag_), value(to_utf8(value_)) {} - info(utf8_string const& tag, ucs4_char value) - : tag(tag), value(to_utf8(value)) {} + info(utf8_string const& tag_, ucs4_char value_) + : tag(tag_), value(to_utf8(value_)) {} template <typename Char> - info(utf8_string const& tag, Char const* str) - : tag(tag), value(to_utf8(str)) {} + info(utf8_string const& tag_, Char const* str) + : tag(tag_), value(to_utf8(str)) {} template <typename Char, typename Traits, typename Allocator> - info(utf8_string const& tag + info(utf8_string const& tag_ , std::basic_string<Char, Traits, Allocator> const& str) - : tag(tag), value(to_utf8(str)) {} + : tag(tag_), value(to_utf8(str)) {} utf8_string tag; value_type value; @@ -75,10 +75,10 @@ namespace boost { namespace spirit typedef void result_type; typedef basic_info_walker<Callback> this_type; - basic_info_walker(Callback& callback, utf8_string const& tag, int depth) - : callback(callback), tag(tag), depth(depth) {} + basic_info_walker(Callback& callback_, utf8_string const& tag_, int depth_) + : callback(callback_), tag(tag_), depth(depth_) {} - void operator()(info::nil) const + void operator()(info::nil_) const { callback.element(tag, "", depth); } @@ -128,8 +128,8 @@ namespace boost { namespace spirit { typedef utf8_string string; - simple_printer(Out& out) - : out(out) {} + simple_printer(Out& out_) + : out(out_) {} void element(string const& tag, string const& value, int /*depth*/) const { diff --git a/3rdParty/Boost/src/boost/spirit/home/support/iterators/detail/combine_policies.hpp b/3rdParty/Boost/src/boost/spirit/home/support/iterators/detail/combine_policies.hpp index cfac882..06946b8 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/iterators/detail/combine_policies.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/iterators/detail/combine_policies.hpp @@ -21,43 +21,6 @@ namespace boost { namespace spirit { namespace iterator_policies // single multi_pass_policy as required by the multi_pass template /////////////////////////////////////////////////////////////////////////// -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - // without partial template specialization there is nothing much to do in - // terms of empty base optimization anyways... - template <typename T, typename Ownership, typename Checking, - typename Input, typename Storage> - struct multi_pass_unique - : Ownership, Checking, Input, Storage - { - multi_pass_unique() {} - multi_pass_unique(T& x) : Input(x) {} - multi_pass_unique(T const& x) : Input(x) {} - - template <typename MultiPass> - static void destroy(MultiPass& mp) - { - Ownership::destroy(mp); - Checking::destroy(mp); - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Ownership::swap(x); - this->Checking::swap(x); - this->Input::swap(x); - this->Storage::swap(x); - } - - template <typename MultiPass> - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - }; -#else /////////////////////////////////////////////////////////////////////////// // select the correct derived classes based on if a policy is empty template <typename T @@ -470,7 +433,6 @@ namespace boost { namespace spirit { namespace iterator_policies inline static bool is_unique(MultiPass const& mp) { return Ownership::is_unique(mp); } }; -#endif /////////////////////////////////////////////////////////////////////////// // the multi_pass_shared structure is used to combine the shared data items diff --git a/3rdParty/Boost/src/boost/spirit/home/support/iterators/detail/multi_pass.hpp b/3rdParty/Boost/src/boost/spirit/home/support/iterators/detail/multi_pass.hpp index 088b39a..8f8e6c7 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/iterators/detail/multi_pass.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/iterators/detail/multi_pass.hpp @@ -17,29 +17,6 @@ /////////////////////////////////////////////////////////////////////////////// namespace boost { namespace spirit { namespace detail { -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - /////////////////////////////////////////////////////////////////////////// - // Meta-function to generate a std::iterator<> base class for multi_pass. - // This is used mainly to improve conformance of compilers not supporting - // PTS and thus relying on inheritance to recognize an iterator. - // - // We are using boost::iterator<> because it offers an automatic - // workaround for broken std::iterator<> implementations. - /////////////////////////////////////////////////////////////////////////// - template <typename T, typename InputPolicy> - struct iterator_base_creator - { - typedef typename InputPolicy::BOOST_NESTED_TEMPLATE unique<T> input_type; - - typedef boost::iterator < - std::forward_iterator_tag - , typename input_type::value_type - , typename input_type::difference_type - , typename input_type::pointer - , typename input_type::reference - > type; - }; -#endif /////////////////////////////////////////////////////////////////////////// // Default implementations of the different policies to be used with a diff --git a/3rdParty/Boost/src/boost/spirit/home/support/iterators/multi_pass.hpp b/3rdParty/Boost/src/boost/spirit/home/support/iterators/multi_pass.hpp index 2b355bf..3fc2440 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/iterators/multi_pass.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/iterators/multi_pass.hpp @@ -26,9 +26,6 @@ namespace boost { namespace spirit : private boost::base_from_member< typename Policies::BOOST_NESTED_TEMPLATE shared<T>*> , public Policies::BOOST_NESTED_TEMPLATE unique<T> -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - , typename iterator_base_creator<T, typename Policies::input_policy>::type -#endif { private: // unique and shared data types @@ -41,11 +38,7 @@ namespace boost { namespace spirit // define the types the standard embedded iterator typedefs are taken // from -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - typedef typename iterator_base_creator<Input, T>::type iterator_type; -#else typedef typename policies_base_type::input_policy iterator_type; -#endif public: // standard iterator typedefs diff --git a/3rdParty/Boost/src/boost/spirit/home/support/limits.hpp b/3rdParty/Boost/src/boost/spirit/home/support/limits.hpp index ff53967..8abb4f1 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/limits.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/limits.hpp @@ -12,17 +12,6 @@ #include <boost/spirit/include/phoenix_core.hpp> -#ifndef BOOST_SPIRIT_USE_PHOENIX_V3 - -#if !defined(SPIRIT_ARGUMENTS_LIMIT) -# define SPIRIT_ARGUMENTS_LIMIT PHOENIX_LIMIT -#endif -#if !defined(SPIRIT_ATTRIBUTES_LIMIT) -# define SPIRIT_ATTRIBUTES_LIMIT PHOENIX_LIMIT -#endif - -#else - #if !defined(SPIRIT_ARGUMENTS_LIMIT) # define SPIRIT_ARGUMENTS_LIMIT BOOST_PHOENIX_LIMIT #endif @@ -31,5 +20,3 @@ #endif #endif - -#endif diff --git a/3rdParty/Boost/src/boost/spirit/home/support/make_component.hpp b/3rdParty/Boost/src/boost/spirit/home/support/make_component.hpp index 04a7437..3868475 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/make_component.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/make_component.hpp @@ -258,7 +258,7 @@ namespace boost { namespace spirit { namespace detail typedef typename proto::reverse_fold_tree< proto::_ - , proto::make<fusion::nil> + , proto::make<fusion::nil_> , make_binary_helper<Grammar> >::template impl<Expr, State, Data> reverse_fold_tree; @@ -362,13 +362,6 @@ namespace boost { namespace spirit { namespace detail )>::type lhs_component; -#ifndef BOOST_SPIRIT_USE_PHOENIX_V3 - typedef typename - proto::result_of::value< - typename proto::result_of::child_c<Expr, 1>::type - >::type - rhs_component; -#else typedef typename mpl::eval_if_c< phoenix::is_actor< @@ -380,7 +373,6 @@ namespace boost { namespace spirit { namespace detail > >::type rhs_component; -#endif typedef typename result_of::make_cons< @@ -396,24 +388,6 @@ namespace boost { namespace spirit { namespace detail result<make_component_(elements_type, Data)>::type result_type; -#ifndef BOOST_SPIRIT_USE_PHOENIX_V3 - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - ) const - { - elements_type elements = - detail::make_cons( - Grammar()( - proto::child_c<0>(expr), state, data) // LHS - , detail::make_cons( - proto::value(proto::child_c<1>(expr))) // RHS - ); - - return make_component_()(elements, data); - } -#else result_type operator()( typename impl::expr_param expr , typename impl::state_param state @@ -466,7 +440,6 @@ namespace boost { namespace spirit { namespace detail return make_component_()(elements, data); } -#endif }; }; }}} diff --git a/3rdParty/Boost/src/boost/spirit/home/support/nonterminal/expand_arg.hpp b/3rdParty/Boost/src/boost/spirit/home/support/nonterminal/expand_arg.hpp index f037acc..f214096 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/nonterminal/expand_arg.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/nonterminal/expand_arg.hpp @@ -50,8 +50,8 @@ namespace boost { namespace spirit { namespace detail struct result<F(A0&)> : result_type<A0> {}; - expand_arg(Context& context) - : context(context) + expand_arg(Context& context_) + : context(context_) { } diff --git a/3rdParty/Boost/src/boost/spirit/home/support/terminal.hpp b/3rdParty/Boost/src/boost/spirit/home/support/terminal.hpp index d52fad2..3ef8c83 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/terminal.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/terminal.hpp @@ -33,10 +33,10 @@ namespace boost { namespace spirit typedef Terminal terminal_type; typedef Args args_type; - terminal_ex(Args const& args) - : args(args) {} - terminal_ex(Args const& args, Terminal const& term) - : args(args), term(term) {} + terminal_ex(Args const& args_) + : args(args_) {} + terminal_ex(Args const& args_, Terminal const& term_) + : args(args_), term(term_) {} Args args; // Args is guaranteed to be a fusion::vectorN so you // can use that template for detection and specialization @@ -50,10 +50,10 @@ namespace boost { namespace spirit typedef Actor actor_type; static int const arity = Arity; - lazy_terminal(Actor const& actor) - : actor(actor) {} - lazy_terminal(Actor const& actor, Terminal const& term) - : actor(actor), term(term) {} + lazy_terminal(Actor const& actor_) + : actor(actor_) {} + lazy_terminal(Actor const& actor_, Terminal const& term_) + : actor(actor_), term(term_) {} Actor actor; Terminal term; @@ -104,11 +104,11 @@ namespace boost { namespace spirit typedef result_type type; result_type - operator()(F f, A0 const& _0) const + operator()(F f, A0 const& _0_) const { typedef typename result_type::proto_child0 child_type; return result_type::make(child_type( - phoenix::detail::expression::function_eval<F, A0>::make(f, _0) + phoenix::detail::expression::function_eval<F, A0>::make(f, _0_) , f.proto_base().child0 )); } @@ -129,11 +129,11 @@ namespace boost { namespace spirit typedef result_type type; result_type - operator()(F f, A0 const& _0, A1 const& _1) const + operator()(F f, A0 const& _0_, A1 const& _1_) const { typedef typename result_type::proto_child0 child_type; return result_type::make(child_type( - phoenix::detail::expression::function_eval<F, A0, A1>::make(f, _0, _1) + phoenix::detail::expression::function_eval<F, A0, A1>::make(f, _0_, _1_) , f.proto_base().child0 )); } @@ -154,11 +154,11 @@ namespace boost { namespace spirit typedef result_type type; result_type - operator()(F f, A0 const& _0, A1 const& _1, A2 const& _2) const + operator()(F f, A0 const& _0_, A1 const& _1_, A2 const& _2_) const { typedef typename result_type::proto_child0 child_type; return result_type::make(child_type( - phoenix::detail::expression::function_eval<F, A0, A1, A2>::make(f, _0, _1, _2) + phoenix::detail::expression::function_eval<F, A0, A1, A2>::make(f, _0_, _1_, _2_) , f.proto_base().child0 )); } @@ -368,42 +368,42 @@ namespace boost { namespace spirit template <typename A0> typename result<A0>::type - operator()(A0 const& _0 + operator()(A0 const& _0_ , typename detail::contains_actor<A0>::is_false = 0) const { typedef typename result<A0>::type result_type; typedef typename result_type::proto_child0 child_type; return result_type::make( child_type( - detail::make_vector(_0) + detail::make_vector(_0_) , this->proto_base().child0) ); } template <typename A0, typename A1> typename result<A0, A1>::type - operator()(A0 const& _0, A1 const& _1 + operator()(A0 const& _0_, A1 const& _1_ , typename detail::contains_actor<A0, A1>::is_false = 0) const { typedef typename result<A0, A1>::type result_type; typedef typename result_type::proto_child0 child_type; return result_type::make( child_type( - detail::make_vector(_0, _1) + detail::make_vector(_0_, _1_) , this->proto_base().child0) ); } template <typename A0, typename A1, typename A2> typename result<A0, A1, A2>::type - operator()(A0 const& _0, A1 const& _1, A2 const& _2 + operator()(A0 const& _0_, A1 const& _1_, A2 const& _2_ , typename detail::contains_actor<A0, A1, A2>::is_false = 0) const { typedef typename result<A0, A1, A2>::type result_type; typedef typename result_type::proto_child0 child_type; return result_type::make( child_type( - detail::make_vector(_0, _1, _2) + detail::make_vector(_0_, _1_, _2_) , this->proto_base().child0) ); } @@ -412,38 +412,38 @@ namespace boost { namespace spirit // least one arg is a Phoenix actor. template <typename A0> typename result<A0>::type - operator()(A0 const& _0 + operator()(A0 const& _0_ , typename detail::contains_actor<A0>::is_true = 0) const { return make_lazy<this_type , typename phoenix::as_actor<A0>::type>()(*this - , phoenix::as_actor<A0>::convert(_0)); + , phoenix::as_actor<A0>::convert(_0_)); } template <typename A0, typename A1> typename result<A0, A1>::type - operator()(A0 const& _0, A1 const& _1 + operator()(A0 const& _0_, A1 const& _1_ , typename detail::contains_actor<A0, A1>::is_true = 0) const { return make_lazy<this_type , typename phoenix::as_actor<A0>::type , typename phoenix::as_actor<A1>::type>()(*this - , phoenix::as_actor<A0>::convert(_0) - , phoenix::as_actor<A1>::convert(_1)); + , phoenix::as_actor<A0>::convert(_0_) + , phoenix::as_actor<A1>::convert(_1_)); } template <typename A0, typename A1, typename A2> typename result<A0, A1, A2>::type - operator()(A0 const& _0, A1 const& _1, A2 const& _2 + operator()(A0 const& _0_, A1 const& _1_, A2 const& _2_ , typename detail::contains_actor<A0, A1, A2>::is_true = 0) const { return make_lazy<this_type , typename phoenix::as_actor<A0>::type , typename phoenix::as_actor<A1>::type , typename phoenix::as_actor<A2>::type>()(*this - , phoenix::as_actor<A0>::convert(_0) - , phoenix::as_actor<A1>::convert(_1) - , phoenix::as_actor<A2>::convert(_2)); + , phoenix::as_actor<A0>::convert(_0_) + , phoenix::as_actor<A1>::convert(_1_) + , phoenix::as_actor<A2>::convert(_2_)); } private: @@ -547,7 +547,6 @@ namespace boost { namespace spirit }} -#ifdef BOOST_SPIRIT_USE_PHOENIX_V3 namespace boost { namespace phoenix { template <typename Tag> @@ -558,6 +557,10 @@ namespace boost { namespace phoenix template <typename Tag> struct custom_terminal<Tag, typename Tag::is_spirit_tag> { +#ifndef BOOST_PHOENIX_NO_SPECIALIZE_CUSTOM_TERMINAL + typedef void _is_default_custom_terminal; // fix for #7730 +#endif + typedef spirit::terminal<Tag> result_type; template <typename Context> @@ -567,7 +570,6 @@ namespace boost { namespace phoenix } }; }} -#endif // Define a spirit terminal. This macro may be placed in any namespace. // Common placeholders are placed in the main boost::spirit namespace diff --git a/3rdParty/Boost/src/boost/spirit/home/support/terminal_expression.hpp b/3rdParty/Boost/src/boost/spirit/home/support/terminal_expression.hpp index cf6bc5d..0d206bf 100644 --- a/3rdParty/Boost/src/boost/spirit/home/support/terminal_expression.hpp +++ b/3rdParty/Boost/src/boost/spirit/home/support/terminal_expression.hpp @@ -9,67 +9,4 @@ #if !defined(BOOST_SPIRIT_TERMINAL_EXPRESSION_MARCH_24_2011_1210AM) #define BOOST_SPIRIT_TERMINAL_EXPRESSION_MARCH_24_2011_1210AM -#ifndef BOOST_SPIRIT_USE_PHOENIX_V3 - -namespace boost { namespace phoenix { namespace detail -{ - namespace expression - { - template < - typename F, typename A0 = void, typename A1 = void - , typename A2 = void, typename Dummy = void> - struct function_eval; - - template <typename F, typename A0> - struct function_eval<F, A0> - { - typedef phoenix::actor< - typename phoenix::as_composite< - phoenix::detail::function_eval<1>, F, A0 - >::type - > type; - - static type make(F f, A0 const & _0) - { - return phoenix::compose< - phoenix::detail::function_eval<1> >(f, _0); - } - }; - - template <typename F, typename A0, typename A1> - struct function_eval<F, A0, A1> - { - typedef phoenix::actor< - typename phoenix::as_composite< - phoenix::detail::function_eval<2>, F, A0, A1 - >::type - > type; - - static type make(F f, A0 const & _0, A1 const & _1) - { - return phoenix::compose< - phoenix::detail::function_eval<2> >(f, _0, _1); - } - }; - - template <typename F, typename A0, typename A1, typename A2> - struct function_eval<F, A0, A1, A2> - { - typedef phoenix::actor< - typename phoenix::as_composite< - phoenix::detail::function_eval<3>, F, A0, A1, A2 - >::type - > type; - - static type make(F f, A0 const & _0, A1 const & _1, A2 const & _2) - { - return phoenix::compose< - phoenix::detail::function_eval<3> >(f, _0, _1, _2); - } - }; - } -}}} - -#endif // !BOOST_SPIRIT_USE_PHOENIX_V3 - #endif |