== 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

