== Needed tools == bzr branches do not come with WAF. PyBindGen uses a unofficial branch of WAF trunk that can be obtained via bazaar from launchpad: $ bzr clone lp:~gjc/waf/cmd waf-cmd For more information about this branch, see https://code.launchpad.net/~gjc/waf/cmd#whiteboard You should then either install this waf version (it is 100% compatible with waf 1.5) or just run waf-light from the checkout dir. For example: [~/projects/pybindgen/new-waf]$ ../../waf-cmd/waf-light configure etc.. You also need to install python, with development headers, and a C++ compiler. == Project style / goals / development guidelines == Code style rules: * Should generate clean C or C++ code - Near what a human programmer would write; * Do not depend on C++ language features except when wrapping C++ APIs - It should be possible to generate pure C modules for wrapping pure C libraries; * No C++ templates allowed (except if wrapping them) * Macros should be used rarely, and should be small if used at all - Shift the complexity into Python side, keep the C/C++ simple (even if large); * Generated code should not require any external library - Whenever possible, do not create functions, expand the needed code from the Python code generator instead; == Submitting patches == 1. First, make sure all unit tests pass: waf clean && waf check 2. Report the feature/bug in launchpad: https://bugs.launchpad.net/pybindgen/+filebug 3. Attach a patch or branch to the bug report