假设有以下的C语言原型函数:
void my_function(POINTER *p);
如何使用SWIG生成Python包装器以实现以下功能:
调用
my_function()
时,将调用my_function(NULL);
调用my_function(None)
时,将调用my_function(NULL);
调用my_function(my_pointer)
时,将调用my_function(my_pointer);
生成一个默认的NULL
。这可以通过以下两种方式之一实现,请注意,None
会自动作为NULL
指针传递。
在声明my_function
之前,在您的接口文件中放置以下类型映射:
%typemap(default) POINTER *p {
$1 = NULL;
}
您可以在接口文件中显示以下函数声明:
void my_function(POINTER *p = NULL);
%include
语句之后放置它,以覆盖C头文件中的函数声明。
%pythoncode
将额外的代码添加到接口的Python侧,而不是C++侧。 - Flexo