boost/python/call.hpp

はじめに

<boost/python/call.hpp> は、C++ から Python の呼び出し可能オブジェクトを起動する call 関数テンプレート多重定義群を定義する。

関数

call

template<class R, class ...Args>
R call(PyObject *callable, Args const&)
要件

R はポインタ型、参照型、またはアクセス可能なコピーコンストラクタを持つ完全型。

効果

Python 内で callable(a1, a2, ...an) を起動する。a1ancall に対する引数で、Python のオブジェクトに変換したもの。

戻り値

Python の呼び出し結果を C++ の型 R に変換したもの。

根拠

完全なセマンティクスの説明と根拠については、このページを見よ。

以下の C++ 関数は、Python の呼び出し可能オブジェクトをその 2 つの引数に適用し結果を返す。Python の例外が送出した場合や結果を double に変換できない場合は例外を投げる。

double apply2(PyObject* func, double x, double y)
{
   return boost::python::call<double>(func, x, y);
}