Cython and C++
Cython, above all binding generators, works with C++ the most seamlessly. C++ has some complexity when writing bindings for it, such as calling conventions, templates, and classes. I find this exception handling to be a shining feature of Cython, and we will look at the examples of each.
Namespaces
I am introducing namespaces first because Cython uses namespaces as a way to reference C++ code within your module. Consider this C++ header with the following namespace:
#ifndef __MY_HEADER_H__
#define __MY_HEADER_H__
namespace mynamespace {
….
}
#endif //__MY_HEADER_H__
You will wrap this with the cdef extern
declaration:
cdef extern from "header.h" namespace "mynamespace":
…
You can now address it in Cython as you normally would do for a module:
import cythonfile
cythonfile.mynamespace.attribute
It really feels like a Python module simply by using a namespace.
Classes
I would take a guess that most of your C++ code revolves around using classes...