From 8a3e78629481340df0c144cda9b1f3e81f2f133f Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Thu, 11 Apr 2002 04:18:52 +0000 Subject: [PATCH] Use preprocessor for detail/returning.hpp [SVN r13442] --- include/boost/python/detail/returning.hpp | 1553 ++--------------- .../preprocessed/returning_non_void.hpp | 991 +++++++++++ .../python/preprocessed/returning_void.hpp | 842 +++++++++ 3 files changed, 1956 insertions(+), 1430 deletions(-) create mode 100644 include/boost/python/preprocessed/returning_non_void.hpp create mode 100644 include/boost/python/preprocessed/returning_void.hpp diff --git a/include/boost/python/detail/returning.hpp b/include/boost/python/detail/returning.hpp index 2c5d8c4f..8ffc2286 100644 --- a/include/boost/python/detail/returning.hpp +++ b/include/boost/python/detail/returning.hpp @@ -17,1462 +17,155 @@ # include # include +# include +# include +# include +# include +# include +# include +# include + namespace boost { namespace python { namespace detail { + // Calling C++ from Python template struct returning { - template - static PyObject* call(R (A0::*pmf)(), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; + +# ifndef BOOST_PYTHON_GENERATE_CODE +# include +# endif - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; +# define BOOST_PYTHON_ARG_CONVERTIBLE(index,ignored) \ + from_python \ + BOOST_PP_CAT(c,index)(PyTuple_GET_ITEM(args_, index)); \ + if (!BOOST_PP_CAT(c,index).convertible()) return 0; - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - ) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; +# define BOOST_PYTHON_GET_ARG(index,ignored) \ + BOOST_PP_CAT(c,index)(PyTuple_GET_ITEM(args_, index)) - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4, A5), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))) ); - - return policies.postcall(args_, result); +# define BOOST_PYTHON_RETURNING_NON_VOID_MF(args,cv) \ + template \ + static PyObject* call( \ + BOOST_PYTHON_FN(A0::*pmf,1,args) cv() \ + , PyObject* args_, PyObject* \ + , P const* policies) \ + { \ + /* check that each of the arguments is convertible */ \ + /* self argument is special */ \ + from_python c0(PyTuple_GET_ITEM(args_, 0)); \ + if (!c0.convertible()) return 0; \ + \ + /* Unroll a loop for the rest of them */ \ + BOOST_PP_REPEAT_FROM_TO(1,args,BOOST_PYTHON_ARG_CONVERTIBLE,nil) \ + \ + /* find the result converter */ \ + typedef typename P::result_converter result_converter; \ + typename mpl::apply1::type cr; \ + if (!cr.convertible()) return 0; \ + \ + if (!policies->precall(args_)) return 0; \ + \ + PyObject* result = cr( \ + ((BOOST_PYTHON_GET_ARG(0,nil))->*pmf)( \ + BOOST_PP_ENUM_SHIFTED(args,BOOST_PYTHON_GET_ARG,nil)) \ + ); \ + \ + return policies->postcall(args_, result); \ } - template - static PyObject* call(R (A0::*pmf)() const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - ) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4, A5) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))) ); - - return policies.postcall(args_, result); +// Generate a series for each cv-qualification +BOOST_PYTHON_REPEAT_MF_ALL_CV_2ND(BOOST_PYTHON_RETURNING_NON_VOID_MF) + +# define BOOST_PYTHON_RETURNING_NON_VOID_FN(args,ignored) \ + template \ + static PyObject* call( \ + BOOST_PYTHON_FN(*pf,0,args) \ + , PyObject* args_ \ + , PyObject* \ + , P const* policies) \ + { \ + /* check that each of the arguments is convertible */ \ + BOOST_PP_REPEAT(args,BOOST_PYTHON_ARG_CONVERTIBLE,nil) \ + \ + /* find the result converter */ \ + typedef typename P::result_converter result_converter; \ + typename mpl::apply1::type cr; \ + if (!cr.convertible()) return 0; \ + \ + if (!policies->precall(args_)) return 0; \ + \ + PyObject* result = cr( \ + (*pf)(BOOST_PP_ENUM(args,BOOST_PYTHON_GET_ARG,nil)) \ + ); \ + \ + return policies->postcall(args_, result); \ } - template - static PyObject* call(R (A0::*pmf)() volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - ) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4, A5) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))) ); - - return policies.postcall(args_, result); - } - - -// missing const volatile type traits -# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - static PyObject* call(R (A0::*pmf)() const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - ) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4, A5) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))) ); - - return policies.postcall(args_, result); - } - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - template - static PyObject* call(R (*pf)(), PyObject* args_, PyObject*, P const& policies) - { - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( (*pf)( - ) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (*pf)(A0), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( (*pf)( - c0(PyTuple_GET_ITEM(args_, 0))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (*pf)(A0, A1), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (*pf)(A0, A1, A2), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (*pf)(A0, A1, A2, A3), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (*pf)(A0, A1, A2, A3, A4), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))) ); - - return policies.postcall(args_, result); - } - template - static PyObject* call(R (*pf)(A0, A1, A2, A3, A4, A5), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - // find the result converter - typedef typename P::result_converter result_converter; - typename mpl::apply1::type cr; - if (!cr.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - PyObject* result = cr( (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))) ); - - return policies.postcall(args_, result); - } +BOOST_PYTHON_REPEAT_ARITY_2ND(BOOST_PYTHON_RETURNING_NON_VOID_FN, nil) }; template <> struct returning { typedef void R; - template - static PyObject* call(R (A0::*pmf)(), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - if (!policies.precall(args_)) return 0; +# ifndef BOOST_PYTHON_GENERATE_CODE +# include +# endif - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - ); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; +#define BOOST_PYTHON_RETURNING_VOID_MF(args,cv) \ +template \ +static PyObject*call( \ + BOOST_PYTHON_FN(A0::*pmf,1,args) cv() \ + , PyObject*args_ \ + , PyObject* \ + , P const* policies) \ +{ \ + /* check that each of the arguments is convertible */ \ + /* self argument is special */ \ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); \ + if (!c0.convertible()) return 0; \ + \ + /* Unroll a loop for the rest of them */ \ + BOOST_PP_REPEAT_FROM_TO(1,args,BOOST_PYTHON_ARG_CONVERTIBLE,nil) \ + \ + if (!policies->precall(args_)) return 0; \ + \ + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( \ + BOOST_PP_ENUM_SHIFTED(args,BOOST_PYTHON_GET_ARG,nil) \ + ); \ + \ + return policies->postcall(args_,detail::none()); \ +} - if (!policies.precall(args_)) return 0; +//Generate a series for each cv-qualification +BOOST_PYTHON_REPEAT_MF_ALL_CV_2ND(BOOST_PYTHON_RETURNING_VOID_MF) + +#define BOOST_PYTHON_RETURNING_VOID_FN(args,ignored) \ +template \ +static PyObject*call( \ + BOOST_PYTHON_FN(*pf,0,args) \ + , PyObject*args_ \ + , PyObject* \ + , P const* policies) \ +{ \ + /*check that each of the arguments is convertible*/ \ + BOOST_PP_REPEAT(args,BOOST_PYTHON_ARG_CONVERTIBLE,nil) \ + \ + BOOST_PP_EXPR_IF(args,if (!policies->precall(args_)) return 0;) \ + \ + (*pf)(BOOST_PP_ENUM(args,BOOST_PYTHON_GET_ARG,nil)); \ + \ + return policies->postcall(args_,detail::none()); \ +} - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; +BOOST_PYTHON_REPEAT_ARITY_2ND(BOOST_PYTHON_RETURNING_VOID_FN,nil) - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4, A5), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))); - - return policies.postcall(args_, detail::none()); - } - - template - static PyObject* call(R (A0::*pmf)() const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - ); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4, A5) const, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))); - - return policies.postcall(args_, detail::none()); - } - - template - static PyObject* call(R (A0::*pmf)() volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - ); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4, A5) volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))); - - return policies.postcall(args_, detail::none()); - } - - -// missing const volatile type traits -# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - static PyObject* call(R (A0::*pmf)() const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - ); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (A0::*pmf)(A1, A2, A3, A4, A5) const volatile, PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - ((c0(PyTuple_GET_ITEM(args_, 0)))->*pmf)( - c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))); - - return policies.postcall(args_, detail::none()); - } - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - template - static PyObject* call(R (*pf)(), PyObject* args_, PyObject*, P const& policies) - { - (*pf)( - ); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (*pf)(A0), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - (*pf)( - c0(PyTuple_GET_ITEM(args_, 0))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (*pf)(A0, A1), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (*pf)(A0, A1, A2), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (*pf)(A0, A1, A2, A3), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (*pf)(A0, A1, A2, A3, A4), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4))); - - return policies.postcall(args_, detail::none()); - } - template - static PyObject* call(R (*pf)(A0, A1, A2, A3, A4, A5), PyObject* args_, PyObject*, P const& policies) - { - // check that each of the arguments is convertible - from_python c0(PyTuple_GET_ITEM(args_, 0)); - if (!c0.convertible()) return 0; - from_python c1(PyTuple_GET_ITEM(args_, 1)); - if (!c1.convertible()) return 0; - from_python c2(PyTuple_GET_ITEM(args_, 2)); - if (!c2.convertible()) return 0; - from_python c3(PyTuple_GET_ITEM(args_, 3)); - if (!c3.convertible()) return 0; - from_python c4(PyTuple_GET_ITEM(args_, 4)); - if (!c4.convertible()) return 0; - from_python c5(PyTuple_GET_ITEM(args_, 5)); - if (!c5.convertible()) return 0; - - if (!policies.precall(args_)) return 0; - - (*pf)( - c0(PyTuple_GET_ITEM(args_, 0)) - , c1(PyTuple_GET_ITEM(args_, 1)) - , c2(PyTuple_GET_ITEM(args_, 2)) - , c3(PyTuple_GET_ITEM(args_, 3)) - , c4(PyTuple_GET_ITEM(args_, 4)) - , c5(PyTuple_GET_ITEM(args_, 5))); - - return policies.postcall(args_, detail::none()); - } }; }}} // namespace boost::python::detail -#endif // RETURNING_DWA20011201_HPP +#endif//RETURNING_DWA20011201_HPP diff --git a/include/boost/python/preprocessed/returning_non_void.hpp b/include/boost/python/preprocessed/returning_non_void.hpp new file mode 100644 index 00000000..4b39bebc --- /dev/null +++ b/include/boost/python/preprocessed/returning_non_void.hpp @@ -0,0 +1,991 @@ +//Copyright David Abrahams 2002.Permission to copy,use, +//modify,sell and distribute this software is granted provided this +//copyright notice appears in all copies.This software is provided +//"as is" without express or implied warranty,and with no claim as +//to its suitability for any purpose. +#ifndef RETURNING_NON_VOID_DWA2002410_HPP +#define RETURNING_NON_VOID_DWA2002410_HPP + +templatestatic PyObject*call( R( A0::*pmf )( ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8,A9 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + from_pythonc9 (PyTuple_GET_ITEM(args_,9 )); + if (!c9.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )),c9 (PyTuple_GET_ITEM(args_,9 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8,A9 ) const,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + from_pythonc9 (PyTuple_GET_ITEM(args_,9 )); + if (!c9.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )),c9 (PyTuple_GET_ITEM(args_,9 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8,A9 ) volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + from_pythonc9 (PyTuple_GET_ITEM(args_,9 )); + if (!c9.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )),c9 (PyTuple_GET_ITEM(args_,9 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8,A9 ) const volatile,PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + from_pythonc9 (PyTuple_GET_ITEM(args_,9 )); + if (!c9.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (( c0 (PyTuple_GET_ITEM(args_,0 )) )->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )),c9 (PyTuple_GET_ITEM(args_,9 )) ) ); + return policies->postcall(args_,result); +} + +templatestatic PyObject*call( R(*pf )( ),PyObject*args_,PyObject*,P const* policies) +{ + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0,A1 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4,A5 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4,A5,A6 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4,A5,A6,A7 ),PyObject*args_,PyObject*,P const* policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ) ); + return policies->postcall(args_,result); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4,A5,A6,A7,A8 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + typedef typename P::result_converter result_converter; + typename mpl::apply1::type cr; + if (!cr.convertible()) return 0; + if (!policies->precall(args_)) return 0; + PyObject*result=cr( (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ) ); + return policies->postcall(args_,result); +} + +#endif // RETURNING_NON_VOID_DWA2002410_HPP diff --git a/include/boost/python/preprocessed/returning_void.hpp b/include/boost/python/preprocessed/returning_void.hpp new file mode 100644 index 00000000..945c4318 --- /dev/null +++ b/include/boost/python/preprocessed/returning_void.hpp @@ -0,0 +1,842 @@ +//Copyright David Abrahams 2002.Permission to copy,use, +//modify,sell and distribute this software is granted provided this +//copyright notice appears in all copies.This software is provided +//"as is" without express or implied warranty,and with no claim as +//to its suitability for any purpose. +#ifndef RETURNING_VOID_DWA2002410_HPP +#define RETURNING_VOID_DWA2002410_HPP + +templatestatic PyObject*call( R( A0::*pmf )( ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8,A9 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + from_pythonc9 (PyTuple_GET_ITEM(args_,9 )); + if (!c9.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )),c9 (PyTuple_GET_ITEM(args_,9 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8,A9 ) const,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + from_pythonc9 (PyTuple_GET_ITEM(args_,9 )); + if (!c9.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )),c9 (PyTuple_GET_ITEM(args_,9 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8,A9 ) volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + from_pythonc9 (PyTuple_GET_ITEM(args_,9 )); + if (!c9.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )),c9 (PyTuple_GET_ITEM(args_,9 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R( A0::*pmf )( A1,A2,A3,A4,A5,A6,A7,A8,A9 ) const volatile,PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0(PyTuple_GET_ITEM(args_,0)); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + from_pythonc9 (PyTuple_GET_ITEM(args_,9 )); + if (!c9.convertible()) return 0; + if (!policies->precall(args_)) return 0; + ((c0(PyTuple_GET_ITEM(args_,0)))->*pmf)( c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )),c9 (PyTuple_GET_ITEM(args_,9 )) ); + return policies->postcall(args_,detail::none()); +} + + + +templatestatic PyObject*call( R(*pf )( ),PyObject*args_,PyObject*,P const*policies) +{ + (*pf)( ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0,A1 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4,A5 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4,A5,A6 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4,A5,A6,A7 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )) ); + return policies->postcall(args_,detail::none()); +} +templatestatic PyObject*call( R(*pf )( A0,A1,A2,A3,A4,A5,A6,A7,A8 ),PyObject*args_,PyObject*,P const*policies) +{ + from_pythonc0 (PyTuple_GET_ITEM(args_,0 )); + if (!c0.convertible()) return 0; + from_pythonc1 (PyTuple_GET_ITEM(args_,1 )); + if (!c1.convertible()) return 0; + from_pythonc2 (PyTuple_GET_ITEM(args_,2 )); + if (!c2.convertible()) return 0; + from_pythonc3 (PyTuple_GET_ITEM(args_,3 )); + if (!c3.convertible()) return 0; + from_pythonc4 (PyTuple_GET_ITEM(args_,4 )); + if (!c4.convertible()) return 0; + from_pythonc5 (PyTuple_GET_ITEM(args_,5 )); + if (!c5.convertible()) return 0; + from_pythonc6 (PyTuple_GET_ITEM(args_,6 )); + if (!c6.convertible()) return 0; + from_pythonc7 (PyTuple_GET_ITEM(args_,7 )); + if (!c7.convertible()) return 0; + from_pythonc8 (PyTuple_GET_ITEM(args_,8 )); + if (!c8.convertible()) return 0; + if (!policies->precall(args_)) return 0; + (*pf)( c0 (PyTuple_GET_ITEM(args_,0 )),c1 (PyTuple_GET_ITEM(args_,1 )),c2 (PyTuple_GET_ITEM(args_,2 )),c3 (PyTuple_GET_ITEM(args_,3 )),c4 (PyTuple_GET_ITEM(args_,4 )),c5 (PyTuple_GET_ITEM(args_,5 )),c6 (PyTuple_GET_ITEM(args_,6 )),c7 (PyTuple_GET_ITEM(args_,7 )),c8 (PyTuple_GET_ITEM(args_,8 )) ); + return policies->postcall(args_,detail::none()); +} + +#endif//RETURNING_VOID_DWA2002410_HPP