// (C) Copyright David Abrahams 2000. 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. // // The author gratefully acknowleges the support of Dragon Systems, Inc., in // producing this work. // // This file generated for 5-argument member functions and 6-argument free // functions by gen_caller.python #ifndef CALLER_DWA05090_H_ # define CALLER_DWA05090_H_ # include "pyconfig.h" # include "wrap_python.h" # include # include "signatures.h" # include "none.h" # include "objects.h" namespace python { // Calling C++ from Python template struct caller { template static PyObject* call(R (T::*pmf)(), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; if (!PyArg_ParseTuple(args, const_cast("O"), &self)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)()); } template static PyObject* call(R (T::*pmf)(A1), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; if (!PyArg_ParseTuple(args, const_cast("OO"), &self, &a1)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()))); } template static PyObject* call(R (T::*pmf)(A1, A2), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; if (!PyArg_ParseTuple(args, const_cast("OOO"), &self, &a1, &a2)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()), from_python(a2, type()))); } template static PyObject* call(R (T::*pmf)(A1, A2, A3), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; if (!PyArg_ParseTuple(args, const_cast("OOOO"), &self, &a1, &a2, &a3)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()))); } template static PyObject* call(R (T::*pmf)(A1, A2, A3, A4), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; if (!PyArg_ParseTuple(args, const_cast("OOOOO"), &self, &a1, &a2, &a3, &a4)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()))); } template static PyObject* call(R (T::*pmf)(A1, A2, A3, A4, A5), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; PyObject* a5; if (!PyArg_ParseTuple(args, const_cast("OOOOOO"), &self, &a1, &a2, &a3, &a4, &a5)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()), from_python(a5, type()))); } template static PyObject* call(R (T::*pmf)() const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; if (!PyArg_ParseTuple(args, const_cast("O"), &self)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)()); } template static PyObject* call(R (T::*pmf)(A1) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; if (!PyArg_ParseTuple(args, const_cast("OO"), &self, &a1)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()))); } template static PyObject* call(R (T::*pmf)(A1, A2) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; if (!PyArg_ParseTuple(args, const_cast("OOO"), &self, &a1, &a2)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()), from_python(a2, type()))); } template static PyObject* call(R (T::*pmf)(A1, A2, A3) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; if (!PyArg_ParseTuple(args, const_cast("OOOO"), &self, &a1, &a2, &a3)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()))); } template static PyObject* call(R (T::*pmf)(A1, A2, A3, A4) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; if (!PyArg_ParseTuple(args, const_cast("OOOOO"), &self, &a1, &a2, &a3, &a4)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()))); } template static PyObject* call(R (T::*pmf)(A1, A2, A3, A4, A5) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; PyObject* a5; if (!PyArg_ParseTuple(args, const_cast("OOOOOO"), &self, &a1, &a2, &a3, &a4, &a5)) return 0; T& target = from_python(self, type()); return to_python((target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()), from_python(a5, type()))); } // Free functions static PyObject* call(R (*f)(), PyObject* args, PyObject* /* keywords */ ) { if (!PyArg_ParseTuple(args, const_cast(""))) return 0; return to_python(f()); } template static PyObject* call(R (*f)(A1), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; if (!PyArg_ParseTuple(args, const_cast("O"), &a1)) return 0; return to_python(f(from_python(a1, type()))); } template static PyObject* call(R (*f)(A1, A2), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; if (!PyArg_ParseTuple(args, const_cast("OO"), &a1, &a2)) return 0; return to_python(f(from_python(a1, type()), from_python(a2, type()))); } template static PyObject* call(R (*f)(A1, A2, A3), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; PyObject* a3; if (!PyArg_ParseTuple(args, const_cast("OOO"), &a1, &a2, &a3)) return 0; return to_python(f(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()))); } template static PyObject* call(R (*f)(A1, A2, A3, A4), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; if (!PyArg_ParseTuple(args, const_cast("OOOO"), &a1, &a2, &a3, &a4)) return 0; return to_python(f(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()))); } template static PyObject* call(R (*f)(A1, A2, A3, A4, A5), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; PyObject* a5; if (!PyArg_ParseTuple(args, const_cast("OOOOO"), &a1, &a2, &a3, &a4, &a5)) return 0; return to_python(f(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()), from_python(a5, type()))); } template static PyObject* call(R (*f)(A1, A2, A3, A4, A5, A6), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; PyObject* a5; PyObject* a6; if (!PyArg_ParseTuple(args, const_cast("OOOOOO"), &a1, &a2, &a3, &a4, &a5, &a6)) return 0; return to_python(f(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()), from_python(a5, type()), from_python(a6, type()))); } }; template <> struct caller { template static PyObject* call(void (T::*pmf)(), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; if (!PyArg_ParseTuple(args, const_cast("O"), &self)) return 0; T& target = from_python(self, type()); (target.*pmf)(); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; if (!PyArg_ParseTuple(args, const_cast("OO"), &self, &a1)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1, A2), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; if (!PyArg_ParseTuple(args, const_cast("OOO"), &self, &a1, &a2)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type()), from_python(a2, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1, A2, A3), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; if (!PyArg_ParseTuple(args, const_cast("OOOO"), &self, &a1, &a2, &a3)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1, A2, A3, A4), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; if (!PyArg_ParseTuple(args, const_cast("OOOOO"), &self, &a1, &a2, &a3, &a4)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1, A2, A3, A4, A5), PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; PyObject* a5; if (!PyArg_ParseTuple(args, const_cast("OOOOOO"), &self, &a1, &a2, &a3, &a4, &a5)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()), from_python(a5, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)() const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; if (!PyArg_ParseTuple(args, const_cast("O"), &self)) return 0; T& target = from_python(self, type()); (target.*pmf)(); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; if (!PyArg_ParseTuple(args, const_cast("OO"), &self, &a1)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1, A2) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; if (!PyArg_ParseTuple(args, const_cast("OOO"), &self, &a1, &a2)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type()), from_python(a2, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1, A2, A3) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; if (!PyArg_ParseTuple(args, const_cast("OOOO"), &self, &a1, &a2, &a3)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1, A2, A3, A4) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; if (!PyArg_ParseTuple(args, const_cast("OOOOO"), &self, &a1, &a2, &a3, &a4)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type())); return detail::none(); } template static PyObject* call(void (T::*pmf)(A1, A2, A3, A4, A5) const, PyObject* args, PyObject* /* keywords */ ) { PyObject* self; PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; PyObject* a5; if (!PyArg_ParseTuple(args, const_cast("OOOOOO"), &self, &a1, &a2, &a3, &a4, &a5)) return 0; T& target = from_python(self, type()); (target.*pmf)(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()), from_python(a5, type())); return detail::none(); } // Free functions static PyObject* call(void (*f)(), PyObject* args, PyObject* /* keywords */ ) { if (!PyArg_ParseTuple(args, const_cast(""))) return 0; f(); return detail::none(); } template static PyObject* call(void (*f)(A1), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; if (!PyArg_ParseTuple(args, const_cast("O"), &a1)) return 0; f(from_python(a1, type())); return detail::none(); } template static PyObject* call(void (*f)(A1, A2), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; if (!PyArg_ParseTuple(args, const_cast("OO"), &a1, &a2)) return 0; f(from_python(a1, type()), from_python(a2, type())); return detail::none(); } template static PyObject* call(void (*f)(A1, A2, A3), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; PyObject* a3; if (!PyArg_ParseTuple(args, const_cast("OOO"), &a1, &a2, &a3)) return 0; f(from_python(a1, type()), from_python(a2, type()), from_python(a3, type())); return detail::none(); } template static PyObject* call(void (*f)(A1, A2, A3, A4), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; if (!PyArg_ParseTuple(args, const_cast("OOOO"), &a1, &a2, &a3, &a4)) return 0; f(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type())); return detail::none(); } template static PyObject* call(void (*f)(A1, A2, A3, A4, A5), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; PyObject* a5; if (!PyArg_ParseTuple(args, const_cast("OOOOO"), &a1, &a2, &a3, &a4, &a5)) return 0; f(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()), from_python(a5, type())); return detail::none(); } template static PyObject* call(void (*f)(A1, A2, A3, A4, A5, A6), PyObject* args, PyObject* /* keywords */ ) { PyObject* a1; PyObject* a2; PyObject* a3; PyObject* a4; PyObject* a5; PyObject* a6; if (!PyArg_ParseTuple(args, const_cast("OOOOOO"), &a1, &a2, &a3, &a4, &a5, &a6)) return 0; f(from_python(a1, type()), from_python(a2, type()), from_python(a3, type()), from_python(a4, type()), from_python(a5, type()), from_python(a6, type())); return detail::none(); } }; namespace detail { // member functions template PyObject* function_signature(R (T::*pmf)()) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); return result; } template PyObject* function_signature(R (T::*pmf)(A1)) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (T::*pmf)(A1, A2)) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (T::*pmf)(A1, A2, A3)) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (T::*pmf)(A1, A2, A3, A4)) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (T::*pmf)(A1, A2, A3, A4, A5)) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } // const member functions template PyObject* function_signature(R (T::*pmf)() const) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); return result; } template PyObject* function_signature(R (T::*pmf)(A1) const) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (T::*pmf)(A1, A2) const) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (T::*pmf)(A1, A2, A3) const) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (T::*pmf)(A1, A2, A3, A4) const) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (T::*pmf)(A1, A2, A3, A4, A5) const) { tuple s(1); s.set_item(0, get_python_type_name(type())); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } // free functions template PyObject* function_signature(R (*f)()) { tuple s(0); PyObject * result = s.reference().release(); return result; } template PyObject* function_signature(R (*f)(A1)) { tuple s(0); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (*f)(A1, A2)) { tuple s(0); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (*f)(A1, A2, A3)) { tuple s(0); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (*f)(A1, A2, A3, A4)) { tuple s(0); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (*f)(A1, A2, A3, A4, A5)) { tuple s(0); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } template PyObject* function_signature(R (*f)(A1, A2, A3, A4, A5, A6)) { tuple s(0); PyObject * result = s.reference().release(); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); result = function_signature_append(result, get_python_type_name(type())); return result; } } // namespace detail } // namespace python #endif // CALLER_DWA05090_H_