Skip to content

geggo/cwrap

 
 

Repository files navigation

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++.

Requirements

  • 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

Getting started

  • checkout
  • try it (in cwrap):
python runtest.py tests/test.h
  • have a look at the generated pxd file
less tests/result_clang/_test.pxd
  • Additional testing (this command needs Python 2.7):
python -m unittest discover -s test

Current status

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
  • namespaces

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?

Contributors

Chris Colbert (original cwrap), Gregor Thalhammer and Volker Mische (libclang frontend)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.8%
  • C 2.7%
  • C++ 0.5%