c++boost.gif (8819 bytes) py_cpp*

Py_cpp is a system for quickly and easily interfacing C++ code with 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 py_cpp. The system should simply "reflect" your C++ classes and functions into Python.

The source code for py_cpp, including a MSVC demo project is available here. It has been tested against Python 1.5.2 with GCC 2.95.2, Metrowerks CodeWarrior Pro6 and with Microsoft Visual C++ 6 sp4 using both the STLport standard library implementation and the library implementation which ships with the compiler. It has also been tested against Python 2.0c1 with MSVC++ 6sp4 by Alex Martelli. Py_cpp requires the Boost libraries, and is currently under formal review on the boost mailing list for acceptance into boost.

py_cpp was originally written by David Abrahams. Ullrich Koethe supplied an early version of the overloading support and wrote the support for implicit conversions of arguments that have a C++ inheritance relationship. Alex Martelli supplied the first tests against Python 2.0. The members of the boost mailing list and the Python community supplied invaluable early feedback. The development of py_cpp wouldn't have been possible without the generous support of Dragon Systems/Lernout and Hauspie, Inc.

Table of Contents

  1. A Brief Introduction to writing Python extension modules
  2. Comparisons between py_cpp and other systems for extending Python
  3. A Simple Example Using py_cpp
  4. Overridable Virtual Functions
  5. Function Overloading
  6. A Peek Under the Hood

More sophisticated examples, including examples which demonstrate that these ExtensionClasses support some of Python's "special" member functions (e.g. __getattr__(self, name)), are given in extclass_demo.cpp, extclass_demo.h, and test_extclass.py in the source code archive. There's much more here, and much more documentation to come...

Questions should be directed to the boost mailing list or to David Abrahams, the primary author and maintainer.

Naming Contest

Yes, I know py_cpp is a lousy name. Problem is, the best names my puny imagination can muster (IDLE and GRAIL) are taken, so I'm holding a naming contest. First prize? You get to pick the name<0.2wink> and you will be credited in the documentation. Names that have been suggested so far include:

Please post or send me your suggestions!

© Copyright David Abrahams 2000. Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies. This document is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.

Updated: Oct 18, 2000