我正在尝试编写一个将多个/变量参数转换为一个输入参数的类型映射。如何将多个参数合并到一个SWIG参数
例如,假设我有一个函数需要一个向量。
void foo(vector<int> x);
而且我想这样称呼它(恰好是在Perl)
foo(1,2,3,4);
类型映射应该采取的参数($ argnum,...),他们收集到一个载体,然后把它传给foo。
我有这个至今:
typedef vector<int> vectori;
%typemap(in) (vectori) {
for (int i=$argnum-1; i<items; i++) {
$1->push_back(<argv i>); // This is language dependent, of course.
}
}
这会工作,只是SWIG检查参数的个数
if ((items < 1) || (items > 1)) {
SWIG_croak("Usage: foo(vectori);");
}
如果我做的:
void foo(vectori, ...);
痛饮将期待用两个参数调用foo。
foo(arg1, arg2);
也许有一种方法来告诉夜风从呼叫ARG2抑制对foo?因为我想有不同的typemaps,取决于foo是期待类型(int,字符串数组,等等)
void foo(...)
:
我不能在我的。我用这个。也许有办法给一个类型“...”
有没有办法做到这一点?