我正在尝试编写argout
SWIG类型图。
从这个界面foobar.i
文件,这对我来说似乎完全合法:
%{
void f(int arg[2]) {}
%}
%typemap(in, numinputs = 0) int [ANY] {}
%typemap(argout) int arg[ANY] {
PySequence_SetItem($input, 0, PyInt_FromLong(0));
}
void f(int arg[2]) {}
SWIG编译非法foobar_wrap.cxx
文件,因为它包含以下片段:
PySequence_SetItem(, 0, PyInt_FromLong(0));
什么都不替换$input
。如果省略in
类型映射,那么包装器是正确的。
为什么呢?
我只想忽略输入,并在输出上填充数组。 SWIG手册明确指出要使用numinputs=0
。
答案 0 :(得分:0)
好的,我明白了。我想这里的牛肉是手册。手册没有说,如何输出结果,不是打印输出,而是填写“输出”参数。例如,该手册明确指出$ input可用于argout typemap。如果还存在匹配(in,numinputs)类型映射,则错误,它不可用。