libclang based frontend for cwrap
cwrap, written by Chris Colbert, is a tool for the automatic generation of Cython declarations (pxd files) from C/C++ header files.
This fork adds another frontend, using libclang of the llvm-project for parsing C/C++.
- the libclang library (libclang.so, libclang.dylib or libclang.dll), contained in llvm binary distribution needs to be somewhere on the binary search path.
- if your header files contain const definitions, you need a Cython > 0.18 in order to be able to compile it
- try it (in cwrap):
python runtest.py tests/test.h
- have a look at the generated pxd file
- Additional testing (this command needs Python 2.7):
python -m unittest discover -s test
For C headers the libclang frontend produces useful results.
Rudimentary support for parsing C++ headers is provided. Known problems exist with supporting following C++ features:
- class template (libclang misses support)
- nested class definitions
- default arguments
Ideas for improvements
- tests, tests, tests.
- provide a way to configure which declarations get exposed (especially for nested includes), e.g., no definitions from system includes, give list of header files, ...
- libclang enables parsing of comments, supporting doxygen syntax. automatically generate documentation comments. does cython support this for cdef extern?
Chris Colbert (original cwrap), Gregor Thalhammer and Volker Mische (libclang frontend)