Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

boost/python/module.hpp

Introduction
Macros
Examples

This header provides the basic facilities needed to create a Boost.Python extension module.

BOOST_PYTHON_MODULE(name) is used to declare Python module initialization functions. The name argument must exactly match the name of the module to be initialized, and must conform to Python's identifier naming rules. Where you would normally write

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

Boost.Python modules should be initialized with

BOOST_PYTHON_MODULE(name)
{
   ...
}

This 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 handle_exception() so that any C++ exceptions generated are safely processeed. During the body of init_name, the current scope refers to the module being initialized.

C++ module definition:

#include <boost/python/module.hpp>

BOOST_PYTHON_MODULE(xxx)
{
    throw "something bad happened"
}

Interactive Python:

>>> import xxx
Traceback (most recent call last):
  File "", line 1, in ?
RuntimeError: Unidentifiable C++ Exception

PrevUpHomeNext