module.qbk 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. [section boost/python/module.hpp]
  2. [section Introduction]
  3. This 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. extern "C" void initname()
  9. {
  10. ...
  11. }
  12. ``
  13. Boost.Python modules should be initialized with
  14. ``
  15. BOOST_PYTHON_MODULE(name)
  16. {
  17. ...
  18. }
  19. ``
  20. 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 [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.
  21. [endsect]
  22. [section Examples]
  23. C++ module definition:
  24. ``
  25. #include <boost/python/module.hpp>
  26. BOOST_PYTHON_MODULE(xxx)
  27. {
  28. throw "something bad happened"
  29. }
  30. ``
  31. Interactive Python:
  32. ``
  33. >>> import xxx
  34. Traceback (most recent call last):
  35. File "", line 1, in ?
  36. RuntimeError: Unidentifiable C++ Exception
  37. ``
  38. [endsect]
  39. [endsect]