boost/python/args.hpp

はじめに

ラップした C++ 関数にキーワード引数を指定する多重定義関数群を提供する。

keyword-expression

keyword-expression ::=  `see-other-document`

keyword-expression の結果は ntbs の列を保持するオブジェクトであり、その型は指定したキーワードの数を符号化する。keyword-expression は保持する一部またはすべてのキーワードについて既定値を持つことが可能である。

クラス

arg クラス

struct arg

arg クラスのオブジェクトは 1 つのキーワードを保持する(サイズが 1 である)keyword-expression である。

arg クラスの概要

namespace boost { namespace python
{
        struct arg
        {
          template <class T>
                  arg &operator = (T const &value);
          explicit arg (char const *name){elements[0].name = name;}
        };

}

arg クラスのコンストラクタ

arg(char const *name)
要件

引数は ntbs でなければならない。

効果

名前 name のキーワードを保持する arg オブジェクトを構築する。

arg クラスの operator= テンプレート

template<class T>
arg &operator=(T const &value)
要件

引数は Python へ変換可能でなければならない。

効果

キーワードの既定値を代入する。

戻り値

this への参照。

keyword-expressionoperator ,

keyword_expression operator,(keyword_expression, const arg &kw) const
keyword_expression operator,(keyword_expression, const char *name) const
要件

引数 namentbs でなければならない。

効果

1 つ以上のキーワードで keyword-expression 引数を拡張する。

戻り値

拡張した keyword-expression

関数(非推奨)

args(...)

unspecified1 args(char const *a0, char const*... an)
要件

引数はすべて ntbs でなければならない。

戻り値

渡した引数をカプセル化する keyword-expression を表すオブジェクト。

#include <boost/python/def.hpp>
using namespace boost::python;

int f(double x, double y, double z=0.0, double w=1.0);

BOOST_PYTHON_MODULE(xxx)
{
   def("f", f
            , ( arg("x"), "y", arg("z")=0.0, arg("w")=1.0 )
            );
}