From 4babbaf7d896e28c97cb63415d1c61d7ebb27498 Mon Sep 17 00:00:00 2001 From: Dexter Date: Wed, 30 Oct 2013 00:47:19 +0000 Subject: [PATCH] fix for boost on gcc, #elif works differently (more correct) and breaks boost http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36453 the two .sh files got windows newlines, so fix those too while we're here Conflicts: mp/src/thirdparty/boost/parameter/aux_/python/invoker_iterate.hpp mp/src/thirdparty/boost/python/detail/result.hpp mp/src/thirdparty/boost/python/detail/target.hpp --- .../parameter/aux_/python/invoker_iterate.hpp | 186 ++++++------ .../thirdparty/boost/python/detail/result.hpp | 270 +++++++++--------- .../thirdparty/boost/python/detail/target.hpp | 172 +++++------ 3 files changed, 314 insertions(+), 314 deletions(-) diff --git a/mp/src/thirdparty/boost/parameter/aux_/python/invoker_iterate.hpp b/mp/src/thirdparty/boost/parameter/aux_/python/invoker_iterate.hpp index c18f6d0b..328e0efb 100644 --- a/mp/src/thirdparty/boost/parameter/aux_/python/invoker_iterate.hpp +++ b/mp/src/thirdparty/boost/parameter/aux_/python/invoker_iterate.hpp @@ -1,93 +1,93 @@ -// Copyright Daniel Wallin 2005. Use, modification and distribution is -// subject to 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) - -#include -#include -#include -#include - -#define N BOOST_PP_ITERATION() - -#define BOOST_PARAMETER_PY_ARG_TYPES(z, n, _) \ - typedef typename mpl::next< \ - BOOST_PP_CAT(iter,BOOST_PP_DEC(n)) \ - >::type BOOST_PP_CAT(iter,n); \ - \ - typedef typename mpl::deref::type BOOST_PP_CAT(spec,n); \ - typedef typename mpl::if_< \ - mpl::and_< \ - mpl::not_ \ - , typename BOOST_PP_CAT(spec,n)::optimized_default \ - > \ - , parameter::aux::maybe \ - , typename BOOST_PP_CAT(spec,n)::type \ - >::type BOOST_PP_CAT(arg,n); \ - typedef typename BOOST_PP_CAT(spec,n)::keyword BOOST_PP_CAT(kw,n); - -#if BOOST_PP_ITERATION_FLAGS() == 1 -template -struct invoker -#elif BOOST_PP_ITERATION_FLAGS() == 2 -template -struct call_invoker -#elif BOOST_PP_ITERATION_FLAGS() == 3 -template -struct init_invoker -#elif BOOST_PP_ITERATION_FLAGS() == 4 -template -struct member_invoker -#endif -{ - typedef typename mpl::begin::type iter0; - typedef typename mpl::deref::type spec0; - typedef typename mpl::if_< - mpl::and_< - mpl::not_ - , typename spec0::optimized_default - > - , parameter::aux::maybe - , typename spec0::type - >::type arg0; - typedef typename spec0::keyword kw0; - - BOOST_PP_REPEAT_FROM_TO(1, N, BOOST_PARAMETER_PY_ARG_TYPES, ~) - - static -#if BOOST_PP_ITERATION_FLAGS() == 3 - T* -#else - R -#endif - execute( -#if BOOST_PP_ITERATION_FLAGS() == 2 || BOOST_PP_ITERATION_FLAGS() == 4 - T& self - , -#endif - BOOST_PP_ENUM_BINARY_PARAMS(N, arg, a) - ) - { - return -#if BOOST_PP_ITERATION_FLAGS() == 1 || BOOST_PP_ITERATION_FLAGS() == 4 - M()( - boost::type() -# if BOOST_PP_ITERATION_FLAGS() == 4 - , self -# endif - , BOOST_PP_ENUM_BINARY_PARAMS(N, parameter::keyword::get() = a) - ); -#elif BOOST_PP_ITERATION_FLAGS() == 2 - self( - BOOST_PP_ENUM_BINARY_PARAMS(N, parameter::keyword::get() = a) - ); -#elif BOOST_PP_ITERATION_FLAGS() == 3 - new T( - BOOST_PP_ENUM_BINARY_PARAMS(N, parameter::keyword::get() = a) - ); -#endif - } -}; - -#undef BOOST_PARAMETER_PY_ARG_TYPES -#undef N - +// Copyright Daniel Wallin 2005. Use, modification and distribution is +// subject to 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) + +#include +#include +#include +#include + +#define N BOOST_PP_ITERATION() + +#define BOOST_PARAMETER_PY_ARG_TYPES(z, n, _) \ + typedef typename mpl::next< \ + BOOST_PP_CAT(iter,BOOST_PP_DEC(n)) \ + >::type BOOST_PP_CAT(iter,n); \ + \ + typedef typename mpl::deref::type BOOST_PP_CAT(spec,n); \ + typedef typename mpl::if_< \ + mpl::and_< \ + mpl::not_ \ + , typename BOOST_PP_CAT(spec,n)::optimized_default \ + > \ + , parameter::aux::maybe \ + , typename BOOST_PP_CAT(spec,n)::type \ + >::type BOOST_PP_CAT(arg,n); \ + typedef typename BOOST_PP_CAT(spec,n)::keyword BOOST_PP_CAT(kw,n); + +#if BOOST_PP_ITERATION_FLAGS() == 1 +template +struct invoker +#else if BOOST_PP_ITERATION_FLAGS() == 2 +template +struct call_invoker +#else if BOOST_PP_ITERATION_FLAGS() == 3 +template +struct init_invoker +#else if BOOST_PP_ITERATION_FLAGS() == 4 +template +struct member_invoker +#endif +{ + typedef typename mpl::begin::type iter0; + typedef typename mpl::deref::type spec0; + typedef typename mpl::if_< + mpl::and_< + mpl::not_ + , typename spec0::optimized_default + > + , parameter::aux::maybe + , typename spec0::type + >::type arg0; + typedef typename spec0::keyword kw0; + + BOOST_PP_REPEAT_FROM_TO(1, N, BOOST_PARAMETER_PY_ARG_TYPES, ~) + + static +#if BOOST_PP_ITERATION_FLAGS() == 3 + T* +#else + R +#endif + execute( +#if BOOST_PP_ITERATION_FLAGS() == 2 || BOOST_PP_ITERATION_FLAGS() == 4 + T& self + , +#endif + BOOST_PP_ENUM_BINARY_PARAMS(N, arg, a) + ) + { + return +#if BOOST_PP_ITERATION_FLAGS() == 1 || BOOST_PP_ITERATION_FLAGS() == 4 + M()( + boost::type() +# if BOOST_PP_ITERATION_FLAGS() == 4 + , self +# endif + , BOOST_PP_ENUM_BINARY_PARAMS(N, parameter::keyword::get() = a) + ); +#else if BOOST_PP_ITERATION_FLAGS() == 2 + self( + BOOST_PP_ENUM_BINARY_PARAMS(N, parameter::keyword::get() = a) + ); +#else if BOOST_PP_ITERATION_FLAGS() == 3 + new T( + BOOST_PP_ENUM_BINARY_PARAMS(N, parameter::keyword::get() = a) + ); +#endif + } +}; + +#undef BOOST_PARAMETER_PY_ARG_TYPES +#undef N + diff --git a/mp/src/thirdparty/boost/python/detail/result.hpp b/mp/src/thirdparty/boost/python/detail/result.hpp index 9b8b4864..426e4e3e 100644 --- a/mp/src/thirdparty/boost/python/detail/result.hpp +++ b/mp/src/thirdparty/boost/python/detail/result.hpp @@ -1,135 +1,135 @@ -#if !defined(BOOST_PP_IS_ITERATING) - -// Copyright David Abrahams 2002. -// 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) - -# ifndef RESULT_DWA2002521_HPP -# define RESULT_DWA2002521_HPP - -# include - -# include - -# include -# include - -# include -# include -# include -# include -# include - -namespace boost { namespace python { namespace detail { - -// Defines a family of overloaded function which, given x, a function -// pointer, member [function] pointer, or an AdaptableFunction object, -// returns a pointer to type*, where R is the result type of -// invoking the result of bind(x). -// -// In order to work around bugs in deficient compilers, if x might be -// an AdaptableFunction object, you must pass OL as a second argument -// to get this to work portably. - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (4, (0, BOOST_PYTHON_MAX_ARITY, , BOOST_PYTHON_FUNCTION_POINTER)) -# include BOOST_PP_ITERATE() - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (4, (0, BOOST_PYTHON_CV_COUNT - 1, , BOOST_PYTHON_POINTER_TO_MEMBER)) -# include BOOST_PP_ITERATE() - -template -boost::type* result(R (T::*), int = 0) { return 0; } - -# if (defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140) \ - || (defined(__GNUC__) && __GNUC__ < 3) \ - || (defined(__MWERKS__) && __MWERKS__ < 0x3000) -// This code actually works on all implementations, but why use it when we don't have to? -template -struct get_result_type -{ - typedef boost::type type; -}; - -struct void_type -{ - typedef void type; -}; - -template -struct result_result -{ - typedef typename mpl::if_c< - is_class::value - , get_result_type - , void_type - >::type t1; - - typedef typename t1::type* type; -}; - -template -typename result_result::type -result(X const&, short) { return 0; } - -# else // Simpler code for more-capable compilers -template -boost::type* -result(X const&, short = 0) { return 0; } - -# endif - -}}} // namespace boost::python::detail - -# endif // RESULT_DWA2002521_HPP - -/* --------------- function pointers --------------- */ -// For gcc 4.4 compatability, we must include the -// BOOST_PP_ITERATION_DEPTH test inside an #else clause. -#else // BOOST_PP_IS_ITERATING -#if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER -# if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ - && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) -# line BOOST_PP_LINE(__LINE__, result.hpp(function pointers)) -# endif - -# define N BOOST_PP_ITERATION() - -template -boost::type* result(R (*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A)), int = 0) -{ - return 0; -} - -# undef N - -/* --------------- pointers-to-members --------------- */ -#elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_POINTER_TO_MEMBER -// Outer over cv-qualifiers - -# define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PYTHON_MAX_ARITY, )) -# include BOOST_PP_ITERATE() - -#elif BOOST_PP_ITERATION_DEPTH() == 2 -# if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ - && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) -# line BOOST_PP_LINE(__LINE__, result.hpp(pointers-to-members)) -# endif -// Inner over arities - -# define N BOOST_PP_ITERATION() -# define Q BOOST_PYTHON_CV_QUALIFIER(BOOST_PP_RELATIVE_ITERATION(1)) - -template -boost::type* result(R (T::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A)) Q, int = 0) -{ - return 0; -} - -# undef N -# undef Q - -#endif // BOOST_PP_ITERATION_DEPTH() -#endif +#if !defined(BOOST_PP_IS_ITERATING) + +// Copyright David Abrahams 2002. +// 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) + +# ifndef RESULT_DWA2002521_HPP +# define RESULT_DWA2002521_HPP + +# include + +# include + +# include +# include + +# include +# include +# include +# include +# include + +namespace boost { namespace python { namespace detail { + +// Defines a family of overloaded function which, given x, a function +// pointer, member [function] pointer, or an AdaptableFunction object, +// returns a pointer to type*, where R is the result type of +// invoking the result of bind(x). +// +// In order to work around bugs in deficient compilers, if x might be +// an AdaptableFunction object, you must pass OL as a second argument +// to get this to work portably. + +# define BOOST_PP_ITERATION_PARAMS_1 \ + (4, (0, BOOST_PYTHON_MAX_ARITY, , BOOST_PYTHON_FUNCTION_POINTER)) +# include BOOST_PP_ITERATE() + +# define BOOST_PP_ITERATION_PARAMS_1 \ + (4, (0, BOOST_PYTHON_CV_COUNT - 1, , BOOST_PYTHON_POINTER_TO_MEMBER)) +# include BOOST_PP_ITERATE() + +template +boost::type* result(R (T::*), int = 0) { return 0; } + +# if (defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140) \ + || (defined(__GNUC__) && __GNUC__ < 3) \ + || (defined(__MWERKS__) && __MWERKS__ < 0x3000) +// This code actually works on all implementations, but why use it when we don't have to? +template +struct get_result_type +{ + typedef boost::type type; +}; + +struct void_type +{ + typedef void type; +}; + +template +struct result_result +{ + typedef typename mpl::if_c< + is_class::value + , get_result_type + , void_type + >::type t1; + + typedef typename t1::type* type; +}; + +template +typename result_result::type +result(X const&, short) { return 0; } + +# else // Simpler code for more-capable compilers +template +boost::type* +result(X const&, short = 0) { return 0; } + +# endif + +}}} // namespace boost::python::detail + +# endif // RESULT_DWA2002521_HPP + +/* --------------- function pointers --------------- */ +// For gcc 4.4 compatability, we must include the +// BOOST_PP_ITERATION_DEPTH test inside an #else clause. +#else // BOOST_PP_IS_ITERATING +#if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER +# if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ + && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) +# line BOOST_PP_LINE(__LINE__, result.hpp(function pointers)) +# endif + +# define N BOOST_PP_ITERATION() + +template +boost::type* result(R (*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A)), int = 0) +{ + return 0; +} + +# undef N + +/* --------------- pointers-to-members --------------- */ +#else if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_POINTER_TO_MEMBER +// Outer over cv-qualifiers + +# define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PYTHON_MAX_ARITY, )) +# include BOOST_PP_ITERATE() + +#else if BOOST_PP_ITERATION_DEPTH() == 2 +# if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ + && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) +# line BOOST_PP_LINE(__LINE__, result.hpp(pointers-to-members)) +# endif +// Inner over arities + +# define N BOOST_PP_ITERATION() +# define Q BOOST_PYTHON_CV_QUALIFIER(BOOST_PP_RELATIVE_ITERATION(1)) + +template +boost::type* result(R (T::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A)) Q, int = 0) +{ + return 0; +} + +# undef N +# undef Q + +#endif // BOOST_PP_ITERATION_DEPTH() +#endif diff --git a/mp/src/thirdparty/boost/python/detail/target.hpp b/mp/src/thirdparty/boost/python/detail/target.hpp index 137801bb..891d241e 100644 --- a/mp/src/thirdparty/boost/python/detail/target.hpp +++ b/mp/src/thirdparty/boost/python/detail/target.hpp @@ -1,86 +1,86 @@ -#if !defined(BOOST_PP_IS_ITERATING) - -// Copyright David Abrahams 2002. -// 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) - -# ifndef TARGET_DWA2002521_HPP -# define TARGET_DWA2002521_HPP - -# include - -# include - -# include -# include -# include -# include -# include -# include - -namespace boost { namespace python { namespace detail { - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (4, (0, BOOST_PYTHON_MAX_ARITY, , BOOST_PYTHON_FUNCTION_POINTER)) -# include BOOST_PP_ITERATE() - -# define BOOST_PP_ITERATION_PARAMS_1 \ - (4, (0, BOOST_PYTHON_CV_COUNT - 1, , BOOST_PYTHON_POINTER_TO_MEMBER)) -# include BOOST_PP_ITERATE() - -template -T& (* target(R (T::*)) )() { return 0; } - -}}} // namespace boost::python::detail - -# endif // TARGET_DWA2002521_HPP - -/* --------------- function pointers --------------- */ -// For gcc 4.4 compatability, we must include the -// BOOST_PP_ITERATION_DEPTH test inside an #else clause. -#else // BOOST_PP_IS_ITERATING -#if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER -# if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ - && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) -# line BOOST_PP_LINE(__LINE__, target.hpp(function_pointers)) -# endif - -# define N BOOST_PP_ITERATION() - -template -BOOST_PP_IF(N, A0, void)(* target(R (*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A))) )() -{ - return 0; -} - -# undef N - -/* --------------- pointers-to-members --------------- */ -#elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_POINTER_TO_MEMBER -// Outer over cv-qualifiers - -# define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PYTHON_MAX_ARITY, )) -# include BOOST_PP_ITERATE() - -#elif BOOST_PP_ITERATION_DEPTH() == 2 -# if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ - && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) -# line BOOST_PP_LINE(__LINE__, target.hpp(pointers-to-members)) -# endif -// Inner over arities - -# define N BOOST_PP_ITERATION() -# define Q BOOST_PYTHON_CV_QUALIFIER(BOOST_PP_RELATIVE_ITERATION(1)) - -template -T& (* target(R (T::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A)) Q) )() -{ - return 0; -} - -# undef N -# undef Q - -#endif // BOOST_PP_ITERATION_DEPTH() -#endif +#if !defined(BOOST_PP_IS_ITERATING) + +// Copyright David Abrahams 2002. +// 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) + +# ifndef TARGET_DWA2002521_HPP +# define TARGET_DWA2002521_HPP + +# include + +# include + +# include +# include +# include +# include +# include +# include + +namespace boost { namespace python { namespace detail { + +# define BOOST_PP_ITERATION_PARAMS_1 \ + (4, (0, BOOST_PYTHON_MAX_ARITY, , BOOST_PYTHON_FUNCTION_POINTER)) +# include BOOST_PP_ITERATE() + +# define BOOST_PP_ITERATION_PARAMS_1 \ + (4, (0, BOOST_PYTHON_CV_COUNT - 1, , BOOST_PYTHON_POINTER_TO_MEMBER)) +# include BOOST_PP_ITERATE() + +template +T& (* target(R (T::*)) )() { return 0; } + +}}} // namespace boost::python::detail + +# endif // TARGET_DWA2002521_HPP + +/* --------------- function pointers --------------- */ +// For gcc 4.4 compatability, we must include the +// BOOST_PP_ITERATION_DEPTH test inside an #else clause. +#else // BOOST_PP_IS_ITERATING +#if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER +# if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ + && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) +# line BOOST_PP_LINE(__LINE__, target.hpp(function_pointers)) +# endif + +# define N BOOST_PP_ITERATION() + +template +BOOST_PP_IF(N, A0, void)(* target(R (*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A))) )() +{ + return 0; +} + +# undef N + +/* --------------- pointers-to-members --------------- */ +#else if BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_POINTER_TO_MEMBER +// Outer over cv-qualifiers + +# define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PYTHON_MAX_ARITY, )) +# include BOOST_PP_ITERATE() + +#elif BOOST_PP_ITERATION_DEPTH() == 2 +# if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ + && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) +# line BOOST_PP_LINE(__LINE__, target.hpp(pointers-to-members)) +# endif +// Inner over arities + +# define N BOOST_PP_ITERATION() +# define Q BOOST_PYTHON_CV_QUALIFIER(BOOST_PP_RELATIVE_ITERATION(1)) + +template +T& (* target(R (T::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A)) Q) )() +{ + return 0; +} + +# undef N +# undef Q + +#endif // BOOST_PP_ITERATION_DEPTH() +#endif