Re: [pygccxml-development] [ANN] Py++ based ctypes code generator
Brought to you by:
mbaas,
roman_yakovenko
From: Gustavo C. <gjc...@gm...> - 2009-01-20 19:23:06
|
2009/1/20 Roman Yakovenko <rom...@gm...> > 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. This is potentially very useful! Generated Python code can be shipped with any project and is (almost) platform independent without need for compilation; you just run Python code. However I have to wonder how (if) do you support C++ calling conventions. Things like: - How to pass the 'this' parameter to call methods; - Function/method overloading. I have followed the path of C++ code generation precisely because of the difficulty of calling C++ code via libffi, or else I would probably have contributed to the gobject-introspection and pybank projects. I thought ctypes did not support C++? Cheers, -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert |