1[section boost/python/module.hpp] 2[section Introduction] 3This header provides the basic facilities needed to create a Boost.Python extension module. 4[endsect] 5[section Macros] 6`BOOST_PYTHON_MODULE(name)` is used to declare Python [@http://www.python.org/doc/2.2/ext/methodTable.html#SECTION003400000000000000000 module initialization functions]. The name argument must exactly match the name of the module to be initialized, and must conform to Python's [@http://www.python.org/doc/2.2/ref/identifiers.html identifier naming rules]. Where you would normally write 7 8`` 9extern "C" void initname() 10{ 11 ... 12} 13`` 14Boost.Python modules should be initialized with 15`` 16BOOST_PYTHON_MODULE(name) 17{ 18 ... 19} 20`` 21This macro generates two functions in the scope where it is used: `extern "C" void initname()`, and `void init_module_name()`, whose body must follow the macro invocation. `init_name` passes `init_module_name` to [link high_level_components.boost_python_errors_hpp.functions handle_exception()] so that any C++ exceptions generated are safely processeed. During the body of `init_name`, the [link high_level_components.boost_python_scope_hpp current scope] refers to the module being initialized. 22[endsect] 23[section Examples] 24C++ module definition: 25`` 26#include <boost/python/module.hpp> 27 28BOOST_PYTHON_MODULE(xxx) 29{ 30 throw "something bad happened" 31} 32`` 33Interactive Python: 34`` 35>>> import xxx 36Traceback (most recent call last): 37 File "", line 1, in ? 38RuntimeError: Unidentifiable C++ Exception 39`` 40[endsect] 41[endsect] 42