我有一个C API,它在其析构函数中传递两个指向结构的指针,以便在free之后将指针置空。例如:
void freeSomething(Something** foo) {
free(*foo)
*foo = null
}
此模式遵循OpenCV API的模式,等等。
不幸的是,使用SWIG包装这些函数很痛苦,因为SWIG创建了一个类型p_Something和一个单独的类型p_p_Something。然后,我必须在SWIG接口中编写实用程序函数以在这些类型之间进行转换。基本上对于我想要释放的每种类型,我必须定义:
%{
#include "something.h"
%}
%inline %{
void swigFreeSomething(Something* foo) {
freeSomething(&foo);
}
%}
我可以通过某种方式自动执行此操作或类似的操作吗?也许完全不同的方法?