boost/python/module.hpp

はじめに

このヘッダは、Boost.Python 拡張モジュールを作成するのに必要な基本的な機能を提供する。

マクロ

BOOST_PYTHON_MODULE(name)

BOOST_PYTHON_MODULE(name) は Python のモジュール初期化関数を宣言するのに使用する。引数 name は初期化するモジュールの名前に完全に一致していなければならず、Python の識別子の名前付け規約に従っていなければならない。通常、次のように書くところを、

extern "C" void initname()
{
   ...
}

Boost.Python モジュールでは次のように初期化する。

BOOST_PYTHON_MODULE(name)
{
   ...
}

このマクロは、使用したスコープ内で 2 つの関数 extern "C" void initname() および void init_module_name() を生成する。関数の本体はマクロ呼び出しの直後でなければならない。生成された C++ 例外を安全に処理するため、init_nameinit_module_namehandle_exception に渡す。init_name の本体内では現在の scope は初期化するモジュールを指す。

C++ のモジュール定義
#include <boost/python/module.hpp>

BOOST_PYTHON_MODULE(xxx)
{
    throw "何かまずいことが起きた"
}
Python の対話例
>>> import xxx
Traceback (most recent call last):
  File "", line 1, in ?
RuntimeError: Unidentifiable C++ Exception