Py++ is really nice. Unfortunately Boost.Python isn't nearly at the same level. Boost.Python is heavily built on C++ templates. Mastering C++ templates is Hard™. Everything Boost does is practically black magic to me. While using Py++, Boost.Python has been fighting with me every step of the way, and winning too!
I decided to move away from Boost once and for all. Some of the non-boost alternatives I could find were:
- Python-SIP: the code generator itself is written in C++; that doesn't make any sense! I want something I can easily hack;
- SWIG: also made in C/C++, and in addition generates very ugly code, almost unreadable with so much macro abuse;
- The PyGtk code generator. I know this one very well :) Unfortunately it has some problems, the biggest of which is that it doesn't support C++ classes, while the ns-3 code I want to wrap is pure C++.
- Must be written in pure Python, and in good pylint-checked style;
- Must have unit tests;
- It should have a simple python API to generate the code, other frontends (such as header file scanning) optional and layered on top of the python API;
- Must be easily extensible to handle new types, with strong focus on correct memory management of type convertion code;
bzr (0.15) branch: http://telecom.inescporto.pt/~gjc/pybindgen/bzr
Releases: http://telecom.inescporto.pt/~gjc/pybindgen/releases
Launchpad (bug reporting, etc.): https://launchpad.net/pybindgen/
The project uses WAF to build; Running "./waf" should be enough to build the example. "./waf check" should be able to run the unit tests.