boost/python/raw_function.hpp

はじめに

raw_function は、tuple および dict を引数にとる関数を可変長の引数と任意のキーワード引数を受け取る Python の呼び出し可能オブジェクトに変換するのに使用する。

関数

raw_function

template<class F>
object raw_function(F f, std::size_t min_args = 0)
要件

f(tuple(), dict()) が合法な形式。

戻り値

少なくとも min_args 個の引数を要求する呼び出し可能オブジェクト。呼び出されると実際の非キーワード引数列が tuple の第 1 引数として、キーワード引数列が dict の第 2 引数として f に渡される。

C++
#include <boost/python/def.hpp>
#include <boost/python/tuple.hpp>
#include <boost/python/dict.hpp>
#include <boost/python/module.hpp>
#include <boost/python/raw_function.hpp>
using namespace boost::python;

tuple raw(tuple args, dict kw)
{
    return make_tuple(args, kw);
}

BOOST_PYTHON_MODULE(raw_test)
{
    def("raw", raw_function(raw));
}
Python
>>> from raw_test import *

>>> raw(3, 4, foo = 'bar', baz = 42)
((3, 4), {'foo': 'bar', 'baz': 42})