为什么SWIG从in和argout类型映射中制作非法包装器?

时间:2014-01-29 04:31:40

标签: swig

我正在尝试编写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

1 个答案:

答案 0 :(得分:0)

好的,我明白了。我想这里的牛肉是手册。手册没有说,如何输出结果,不是打印输出,而是填写“输出”参数。例如,该手册明确指出$ input可用于argout typemap。如果还存在匹配(in,numinputs)类型映射,则错误,它不可用。