]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [section boost/python/call.hpp] |
2 | [section Introduction] | |
3 | <boost/python/call.hpp> defines the call family of overloaded function templates, used to invoke Python callable objects from C++. | |
4 | [endsect] | |
5 | [section Function `call`] | |
6 | `` | |
7 | template <class R, class A1, class A2, ... class An> | |
8 | R call(PyObject* callable, A1 const&, A2 const&, ... An const&) | |
9 | `` | |
10 | [variablelist | |
11 | [[Requires][R is a pointer type, reference type, or a complete type with an accessible copy constructor]] | |
12 | [[Effects][Invokes callable(a1, a2, ...an) in Python, where a1...an are the arguments to call(), converted to Python objects. ]] | |
13 | [[Returns][The result of the Python call, converted to the C++ type R.]] | |
14 | [[Rationale][For a complete semantic description and rationale, see this page. ]] | |
15 | ] | |
16 | [endsect] | |
17 | [section Example] | |
18 | The following C++ function applies a Python callable object to its two arguments and returns the result. If a Python exception is raised or the result can't be converted to a double, an exception is thrown. | |
19 | `` | |
20 | double apply2(PyObject* func, double x, double y) | |
21 | { | |
22 | return boost::python::call<double>(func, x, y); | |
23 | } | |
24 | `` | |
25 | [endsect] | |
26 | [endsect] |