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 init
name
()
およびvoid init_module_
name
()
を生成する。関数の本体はマクロ呼び出しの直後でなければならない。生成された C++ 例外を安全に処理するため、init_
name
はinit_module_
name
をhandle_exception
に渡す。init_
name
の本体内では現在のscope
は初期化するモジュールを指す。
例
#include <boost/python/module.hpp>
BOOST_PYTHON_MODULE(xxx)
{
throw "何かまずいことが起きた"
}
>>> import xxx
Traceback (most recent call last):
File "", line 1, in ?
RuntimeError: Unidentifiable C++ Exception