[C++-sig] [ANN] Py++ based ctypes code generator
roman.yakovenko at gmail.com
Tue Jan 20 20:16:02 CET 2009
I would like to announce a new code generator for ctypes package.
The new code generator is integrated with Py++ package and reuse most
of its infrastructure:
* GCC-XML - generates an XML description of a C++ program from GCC's
* pygccxml - powerful and simple Python package to work GCCXML generated file.
* Py++ design, code and utilities
* It was build with future ( ctypes-cpp ) functionality in mind.
* It has cross-platform ( Windows XP and Linux Ubuntu 8.10 ) unit tests
How it works:
1. Using pygccxml, the source files are parsed ( using pygccxml ) and
in-memory description of the code is created
2. .dll, .map or .so file is parsed ( pygccxml ) and exported symbols
list is created
3. Using decorated and undecorated names, mapping between declarations
and exported symbols is created.
4. The exported symbols and the mapping are used to:
* define for what declarations the code should be generated
* find out function calling convention
5. The last step - the code is generated
* shared libraries, that were compiled using C or C++ compiler
* free functions, including variable number of arguments
* [global|member] [named|anonymous] variables
* [named|anonymous|opaque|nested] structures
Is it useful? - Yes. I created example, which generates code for
GMP( http://gmplib.org/ ) library. The following link
will take you to the example.
* dev - directory, which contains code generator source code
* pygmplib - directory, which contains generated code - Python
package, which provides access to GMP lib functionality
* test.py - Python script - tester.
Want to try?
contains few packages
* ctypes code generator - stand alone executable, which
generates code for a .dll file
* gccxml-setup - gccxml setup file
Sorry, no binaries :-(
* you need to check-out( http://gccxml.org/HTML/Download.html)
and build gccxml ( http://gccxml.org/HTML/Install.html )
* you need to check-out Py++ and pygccxml
is the script, which generates code for .so file.
Your feedback is welcome.
C++ Python language binding
More information about the Cplusplus-sig