如何在Cython包装器中保留复杂的C ++命名空间?

时间:2015-01-12 03:09:33

标签: python c++ namespaces wrapper cython

我正在为复杂的C ++库编写Cython包装器。我想我已经找到了如何编写必要的.pxd和.pyx文件。我现在的问题是,尽管我的C ++程序有大约100个单独的命名空间,但Cython编译的python库的命名空间完全是平的。

例如,如果我在.pxd文件中有这个:

cdef extern from "lm/io/hdf5/SimulationFile.h" namespace "lm::io::hdf5":
    cdef cppclass CppHdf5File "lm::io::hdf5::Hdf5File":
        ...

这在我的.pyx文件中:

cdef class Hdf5File:
    cdef CppHdf5File* thisptr 
    ...

然后Cython编译的Python库包含一个名为Hdf5File的类。理想情况下,我希望Python包含一个lm.io.hdf5.Hdf5File类(即lm.io.hdf5模块中的Hdf5File类)。换句话说,如果有办法将C ++ :: scoping运算符转换为Python,我会喜欢它。点运营商。

有没有办法让Cython与我现有的C ++名称空间很好地配合?

0 个答案:

没有答案