sl@0: #if !defined(BOOST_PP_IS_ITERATING) sl@0: sl@0: // Copyright David Abrahams 2002. sl@0: // Distributed under the Boost Software License, Version 1.0. (See sl@0: // accompanying file LICENSE_1_0.txt or copy at sl@0: // http://www.boost.org/LICENSE_1_0.txt) sl@0: sl@0: # ifndef TARGET_DWA2002521_HPP sl@0: # define TARGET_DWA2002521_HPP sl@0: sl@0: # include sl@0: sl@0: # include sl@0: sl@0: # include sl@0: # include sl@0: # include sl@0: # include sl@0: # include sl@0: # include sl@0: sl@0: namespace boost { namespace python { namespace detail { sl@0: sl@0: # define BOOST_PP_ITERATION_PARAMS_1 \ sl@0: (4, (0, BOOST_PYTHON_MAX_ARITY, , BOOST_PYTHON_FUNCTION_POINTER)) sl@0: # include BOOST_PP_ITERATE() sl@0: sl@0: # define BOOST_PP_ITERATION_PARAMS_1 \ sl@0: (4, (0, BOOST_PYTHON_CV_COUNT - 1, , BOOST_PYTHON_POINTER_TO_MEMBER)) sl@0: # include BOOST_PP_ITERATE() sl@0: sl@0: template sl@0: T& (* target(R (T::*)) )() { return 0; } sl@0: sl@0: }}} // namespace boost::python::detail sl@0: sl@0: # endif // TARGET_DWA2002521_HPP sl@0: sl@0: /* --------------- function pointers --------------- */ sl@0: #elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_FUNCTION_POINTER sl@0: # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ sl@0: && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) sl@0: # line BOOST_PP_LINE(__LINE__, target.hpp(function_pointers)) sl@0: # endif sl@0: sl@0: # define N BOOST_PP_ITERATION() sl@0: sl@0: template sl@0: BOOST_PP_IF(N, A0, void)(* target(R (*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A))) )() sl@0: { sl@0: return 0; sl@0: } sl@0: sl@0: # undef N sl@0: sl@0: /* --------------- pointers-to-members --------------- */ sl@0: #elif BOOST_PP_ITERATION_DEPTH() == 1 && BOOST_PP_ITERATION_FLAGS() == BOOST_PYTHON_POINTER_TO_MEMBER sl@0: // Outer over cv-qualifiers sl@0: sl@0: # define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PYTHON_MAX_ARITY, )) sl@0: # include BOOST_PP_ITERATE() sl@0: sl@0: #elif BOOST_PP_ITERATION_DEPTH() == 2 sl@0: # if !(BOOST_WORKAROUND(__MWERKS__, > 0x3100) \ sl@0: && BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3201))) sl@0: # line BOOST_PP_LINE(__LINE__, target.hpp(pointers-to-members)) sl@0: # endif sl@0: // Inner over arities sl@0: sl@0: # define N BOOST_PP_ITERATION() sl@0: # define Q BOOST_PYTHON_CV_QUALIFIER(BOOST_PP_RELATIVE_ITERATION(1)) sl@0: sl@0: template sl@0: T& (* target(R (T::*)(BOOST_PP_ENUM_PARAMS_Z(1, N, A)) Q) )() sl@0: { sl@0: return 0; sl@0: } sl@0: sl@0: # undef N sl@0: # undef Q sl@0: sl@0: #endif