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_nameはinit_module_nameをhandle_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