** Disclaimer **
This example demonstrates some of the more advanced features
of SWIG--don't say I didn't warn you!

In this example, we've built a simple C++ widget for making
2D plots.   The widget is really just a wrapper around some
functions in the gd-1.2 library (for simplicity). However,
the C++ widget relies on callback functions written in
C++.   To work around this problem, this example illustrates
how to :

1.  Implement a C/C++ callback function in Python
    (without C/C++ knowing about it).

2.  Use of SWIG typemaps to allow a Python
    callable object to be passed in as a function
    argument as well as mapping Python file objects into
    the FILE * datatype.

3.  Adding new methods to a C++ class.

More details about this can be found in the SWIG user's manual.


Notes :

'make ccode' builds a C++ only implementation where our
"widget" is used from a simple C++ program.

'make' or 'make static' builds a Python implementation
that uses the same C++ widget, but with callback functions
written in Python.

