【发布时间】:2014-02-19 09:30:16
【问题描述】:
我有一个 C 头文件:
typedef struct
{
<normal members>
void (*cb_func)(glp_tree *T, void *info);
void *cb_info;
<normal members>
} glp_iocp;
目前,在我的 pxd 文件中:
ctypedef struct IntOptCP "glp_iocp":
<normal members>
int out_dly # mip.out_dly (milliseconds)
#void (*cb_func)(Tree* tree, void* info)
# mip.cb_func
#void* cb_info # mip.cb_info
<normal members>
在 pyx 文件中,有时我会(基本上)这样做:
cdef class MyClass:
IntOptCP _iocp
<__cintit__ and the like>
def some_method(self):
<manipulation of self._iocp>
controls = dict()
controls = self._iocp
return controls
这很好用。不过,现在我也想曝光cb_func和cb_info。然后,这会中断对控件的分配。我想要的是两种python对象类型(类?),一种用于cb_func,一种用于cb_info,其实例可以传递给glp_iocp结构的cb_func和cb_info参数.
我已阅读 https://github.com/cython/cython/tree/master/Demos/callback(并使用过 pycapsule),但我对 Cython 太缺乏经验/不熟悉,无法了解如何将这些信息用于我的具体案例。
因此,欢迎任何有关如何(最好)公开cb_func 和cb_info 的帮助和指示。
【问题讨论】:
标签: python pointers function-pointers cython