From 4c8bcd918bf0c1ec680fd6eed5f9a695f6de4441 Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Mon, 9 Sep 2002 01:59:45 +0000 Subject: [PATCH] cope with recent PP lib changes [SVN r15221] --- include/boost/python/detail/defaults_gen.hpp | 108 +++++++++---------- include/boost/python/detail/returning.hpp | 12 +-- include/boost/python/signature.hpp | 2 +- 3 files changed, 57 insertions(+), 65 deletions(-) diff --git a/include/boost/python/detail/defaults_gen.hpp b/include/boost/python/detail/defaults_gen.hpp index 79144360..50b5ef73 100644 --- a/include/boost/python/detail/defaults_gen.hpp +++ b/include/boost/python/detail/defaults_gen.hpp @@ -35,27 +35,19 @@ struct func_stubs_base {}; }}} // namespace boost::python::detail -/////////////////////////////////////////////////////////////////////////////// -// Temporary BOOST_PP fix before the CVS stabalizes /*$$$ FIX ME $$$*/ - -#ifndef BOOST_PP_FIX_REPEAT_2ND -#define BOOST_PP_FIX_REPEAT_2ND(c, m, d) /* ... */ \ - BOOST_PP_CAT(BOOST_PP_R2_, c)(m, d) \ - /**/ -#endif /////////////////////////////////////////////////////////////////////////////// -#define BPL_IMPL_TYPEDEF_GEN(INDEX, DATA) \ +#define BPL_IMPL_TYPEDEF_GEN(z, INDEX, DATA) \ typedef typename boost::python::detail::type_at \ < \ BOOST_PP_ADD(INDEX, DATA), \ SigT \ >::type BOOST_PP_CAT(T, INDEX); \ -#define BPL_IMPL_ARGS_GEN(INDEX, DATA) \ +#define BPL_IMPL_ARGS_GEN(z, INDEX, DATA) \ BOOST_PP_CAT(T, INDEX) BOOST_PP_CAT(arg, INDEX) \ -#define BPL_IMPL_FUNC_WRAPPER_GEN(INDEX, DATA) \ +#define BPL_IMPL_FUNC_WRAPPER_GEN(z, INDEX, DATA) \ static RT BOOST_PP_CAT(func_, INDEX) \ ( \ BOOST_PP_ENUM \ @@ -88,14 +80,14 @@ struct func_stubs_base {}; \ typedef typename boost::python::detail::type_at<0, SigT>::type RT; \ \ - BOOST_PP_FIX_REPEAT_2ND \ + BOOST_PP_REPEAT_2ND \ ( \ N_ARGS, \ BPL_IMPL_TYPEDEF_GEN, \ 1 \ ) \ \ - BOOST_PP_FIX_REPEAT_2ND \ + BOOST_PP_REPEAT_2ND \ ( \ BOOST_PP_INC(N_DFLTS), \ BPL_IMPL_FUNC_WRAPPER_GEN, \ @@ -105,7 +97,7 @@ struct func_stubs_base {}; }; \ /////////////////////////////////////////////////////////////////////////////// -#define BPL_IMPL_MEM_FUNC_WRAPPER_GEN(INDEX, DATA) \ +#define BPL_IMPL_MEM_FUNC_WRAPPER_GEN(z, INDEX, DATA) \ static RT BOOST_PP_CAT(func_, INDEX) \ ( \ ClassT& obj BOOST_PP_COMMA_IF( \ @@ -129,34 +121,34 @@ struct func_stubs_base {}; ); \ } \ -#define BPL_IMPL_GEN_MEM_FUNCTION(FNAME, FSTUBS_NAME, N_ARGS, N_DFLTS, RETURN) \ - struct FSTUBS_NAME { \ - \ - BOOST_STATIC_CONSTANT(int, n_funcs = BOOST_PP_INC(N_DFLTS)); \ - BOOST_STATIC_CONSTANT(int, max_args = n_funcs + 1); \ - \ - template \ - struct gen { \ - \ - typedef typename boost::python::detail::type_at<0, SigT>::type RT; \ - typedef typename boost::python::detail::type_at<1, SigT>::type ClassT;\ - \ - BOOST_PP_FIX_REPEAT_2ND \ - ( \ - N_ARGS, \ - BPL_IMPL_TYPEDEF_GEN, \ - 2 \ - ) \ - \ - BOOST_PP_FIX_REPEAT_2ND \ - ( \ - BOOST_PP_INC(N_DFLTS), \ - BPL_IMPL_MEM_FUNC_WRAPPER_GEN, \ - (FNAME, BOOST_PP_SUB(N_ARGS, N_DFLTS), RETURN) \ - ) \ - }; \ - }; \ - \ +#define BPL_IMPL_GEN_MEM_FUNCTION(FNAME, FSTUBS_NAME, N_ARGS, N_DFLTS, RETURN) \ + struct FSTUBS_NAME { \ + \ + BOOST_STATIC_CONSTANT(int, n_funcs = BOOST_PP_INC(N_DFLTS)); \ + BOOST_STATIC_CONSTANT(int, max_args = n_funcs + 1); \ + \ + template \ + struct gen { \ + \ + typedef typename boost::python::detail::type_at<0, SigT>::type RT; \ + typedef typename boost::python::detail::type_at<1, SigT>::type ClassT; \ + \ + BOOST_PP_REPEAT_2ND \ + ( \ + N_ARGS, \ + BPL_IMPL_TYPEDEF_GEN, \ + 2 \ + ) \ + \ + BOOST_PP_REPEAT_2ND \ + ( \ + BOOST_PP_INC(N_DFLTS), \ + BPL_IMPL_MEM_FUNC_WRAPPER_GEN, \ + (FNAME, BOOST_PP_SUB(N_ARGS, N_DFLTS), RETURN) \ + ) \ + }; \ + }; + /////////////////////////////////////////////////////////////////////////////// #if defined(BOOST_MSVC) @@ -284,23 +276,23 @@ struct func_stubs_base {}; // for the return type (void) and the lack of the return keyword. // /////////////////////////////////////////////////////////////////////////////// -#define BOOST_PYTHON_FUNCTION_OVERLOADS(GENERATOR_NAME, FNAME, MIN_ARGS, MAX_ARGS)\ - BPL_IMPL_GEN_FUNCTION_STUB \ - ( \ - FNAME, \ - GENERATOR_NAME, \ - MAX_ARGS, \ - BOOST_PP_SUB(MAX_ARGS, MIN_ARGS) \ - ) \ +#define BOOST_PYTHON_FUNCTION_OVERLOADS(GENERATOR_NAME, FNAME, MIN_ARGS, MAX_ARGS) \ + BPL_IMPL_GEN_FUNCTION_STUB \ + ( \ + FNAME, \ + GENERATOR_NAME, \ + MAX_ARGS, \ + BOOST_PP_SUB(MAX_ARGS, MIN_ARGS) \ + ) -#define BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(GENERATOR_NAME, FNAME, MIN_ARGS, MAX_ARGS)\ - BPL_IMPL_GEN_MEM_FUNCTION_STUB \ - ( \ - FNAME, \ - GENERATOR_NAME, \ - MAX_ARGS, \ - BOOST_PP_SUB(MAX_ARGS, MIN_ARGS) \ - ) \ +#define BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(GENERATOR_NAME, FNAME, MIN_ARGS, MAX_ARGS) \ + BPL_IMPL_GEN_MEM_FUNCTION_STUB \ + ( \ + FNAME, \ + GENERATOR_NAME, \ + MAX_ARGS, \ + BOOST_PP_SUB(MAX_ARGS, MIN_ARGS) \ + ) // deprecated macro names (to be removed) #define BOOST_PYTHON_FUNCTION_GENERATOR BOOST_PYTHON_FUNCTION_OVERLOADS diff --git a/include/boost/python/detail/returning.hpp b/include/boost/python/detail/returning.hpp index 5f45ffab..495a8564 100644 --- a/include/boost/python/detail/returning.hpp +++ b/include/boost/python/detail/returning.hpp @@ -74,7 +74,7 @@ struct returning # endif // RETURNING_DWA20011201_HPP // --------------- function pointers --------------- // -#elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() & BOOST_PYTHON_FUNCTION_POINTER +#elif BOOST_PP_ITERATION_DEPTH() == 1 && (BOOST_PP_ITERATION_FLAGS() & BOOST_PYTHON_FUNCTION_POINTER) # line BOOST_PP_LINE(__LINE__, returning.hpp(function pointers)) # define N BOOST_PP_ITERATION() @@ -131,7 +131,7 @@ struct returning # undef BOOST_PYTHON_CHECK_CONVERSION // --------------- pointers to members --------------- // -#elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() & BOOST_PYTHON_POINTER_TO_MEMBER +#elif BOOST_PP_ITERATION_DEPTH() == 1 && (BOOST_PP_ITERATION_FLAGS() & BOOST_PYTHON_POINTER_TO_MEMBER) // Outer iteration over cv-qualifications # define BOOST_PP_ITERATION_PARAMS_2 \ @@ -145,12 +145,12 @@ struct returning # define N BOOST_PP_ITERATION() # define Q BOOST_PYTHON_CV_QUALIFIER(BOOST_PP_RELATIVE_ITERATION(1)) -# define BOOST_PYTHON_CALL_ARGS(n, _) \ +# define BOOST_PYTHON_CALL_ARGS(z, n, _) \ BOOST_PP_COMMA_IF(n) c##n(PyTuple_GET_ITEM(args_, BOOST_PP_INC(n))) -# define BOOST_PYTHON_CHECK_CONVERSION(n, _) \ - arg_from_python c##n(PyTuple_GET_ITEM(args_, BOOST_PP_INC(n))); \ - if (!c##n.convertible()) \ +# define BOOST_PYTHON_CHECK_CONVERSION(z, n, _) \ + arg_from_python c##n(PyTuple_GET_ITEM(args_, BOOST_PP_INC(n))); \ + if (!c##n.convertible()) \ return 0; # if (BOOST_PP_RELATIVE_FLAGS(1) & BOOST_PYTHON_RETURNING_NON_VOID) diff --git a/include/boost/python/signature.hpp b/include/boost/python/signature.hpp index 46d0dabb..e960f122 100644 --- a/include/boost/python/signature.hpp +++ b/include/boost/python/signature.hpp @@ -53,7 +53,7 @@ namespace boost { namespace python { namespace detail { // and arguments of the input signature and stuffs them in an mpl::type_list. // /////////////////////////////////////////////////////////////////////////////// -#define BOOST_PYTHON_TEMPLATE_GEN(INDEX, DATA) class BOOST_PP_CAT(T, INDEX) +#define BOOST_PYTHON_TEMPLATE_GEN(z, index, data) class BOOST_PP_CAT(T, index) /////////////////////////////////////////////////////////////////////////////// #define BOOST_PP_ITERATION_PARAMS_1 \