Differences between revisions 29 and 45 (spanning 16 versions)
Revision 29 as of 2004-05-20 23:28:56
Size: 2507
Editor: 198
Comment:
Revision 45 as of 2008-11-15 14:00:11
Size: 859
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
The BoostPython Library binds C++ and Python in a mostly-seamless fashion. It is just one member of the boost C++ library collection at http://www.boost.org.

Use the BoostPython Library to quickly and easily export C++ to Python such that the Python interface is very similar to the C++ interface. It is designed to be minimally intrusive on your C++ design. In most cases, you should not have to alter your C++ classes in any way in order to use them with Boost.Python. The system should simply ''reflect'' your C++ classes and functions into Python. Boost.Python bindings are written in pure C++, using no tools other than your editor and your C++ compiler.

The Python [http://www.python.org/sigs/c++-sig/ C++-sig] serves as a mailing list for users of the library. Documentation for the current release is available at http://www.boost.org/libs/python/. Development documentation, which is usually more up-to-date, is available through the [http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/boost/boost/libs/python/doc/index.html Boost CVSWeb] interface.
'''Boost.Python''' binds C++ and Python. Read [[/GettingStarted]] for an introduction.
Line 11: Line 7:
 * ["/Introduction"]
 * ["/FAQ"]
 * [[/GettingStarted]]
 * [[/FAQ]]
Line 15: Line 11:
 * ["/module"] level: def,scope
 * ["/class"]
 * ["/extract"]
 * ["/object"]
 * ["/list"]
 * ["/iterator"]
 * [[/module]] level: def,scope
 * [[/class]]
 * [[/extract]]
 * [[/object]]
 * [[/handle]]
 * [[/list]]
 * [[
/iterator]]
Line 23: Line 20:
 * /RelatedProjects
Line 29: Line 27:
 1. ["/Inheritance"]  1. [[/Inheritance]]
Line 36: Line 34:
 1. /EmbeddingPython
Line 39: Line 38:

----
From DavidAbrahams:

Boost.Python is designed with the idea in mind that users never touch a Py``Object*.

Boost.Python depends on quite a few of the other boost libraries (possibly a few others):
 * type_traits
 * bind
 * function
 * mpl
 * smart_ptr

IIUC, ["weave"] can be used for embedding nontrivial C++ code, if you're
willing to stick it all inside one function body. Furthermore, tools like
weave.blitz() can make an enormous difference by compiling an entire C++
expression template corresponding to an arbitrarily complicated Python
expression. Surely that's nontrivial. It's definitely ''cool''. I think weave
offers enormous power to the person who's programming mostly in Python.

Boost.Python binds C++ and Python. Read /GettingStarted for an introduction.

This page serves as a forum to gather peoples' experience and as a cookbook, as it is more dynamic by nature and open to contributors.

Various items:

Tutorial:

  1. /SimpleExample

  2. /ExportingClasses

  3. /OverridableVirtualFunctions

  4. /FunctionOverloading

  5. /Inheritance

  6. /SpecialMethods

  7. /PeekUnderTheHood

  8. /CrossExtensionModuleDependencies

  9. /WrappingEnums

  10. /PointersAndSmartPointers

  11. /InternalDataStructures

  12. /EmbeddingPython

Test cases:

boost.python (last edited 2008-11-15 14:00:11 by localhost)

Unable to edit the page? See the FrontPage for instructions.