[C++-sig] [ANN] Py++ based ctypes code generator

Roman Yakovenko roman.yakovenko at gmail.com
Tue Jan 20 20:16:02 CET 2009


Hello.



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
internal representation

* 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



Supported functionality:



* 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

* enumerations

* typedefs



Examples:



   Is it useful? - Yes. I created example, which generates code for
GMP( http://gmplib.org/ ) library. The following link
(http://pygccxml.svn.sourceforge.net/viewvc/pygccxml/pyplusplus_dev/examples/gmplib_dev/)
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?

   Windows users:

       http://sourceforge.net/project/showfiles.php?group_id=118209
contains few packages

       * ctypes code generator - stand alone executable, which
generates code for a .dll file

       * gccxml-setup - gccxml setup file

   Linux users:

       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
(http://sourceforge.net/svn/?group_id=118209 )

       * wrap_library.py
(http://pygccxml.svn.sourceforge.net/viewvc/pygccxml/pyplusplus_dev/scripts/)
is the script, which generates code for .so file.



Your feedback is welcome.



--

Roman Yakovenko

C++ Python language binding

http://www.language-binding.net/


More information about the Cplusplus-sig mailing list