如何为需要使用两个表作为参数的函数创建 SWIG 类型映射?

我正在尝试创建以下函数的 SWIG 类型映射:

void mix(int size, float *in1, float *in2, float *out1)
{
    for (int i = 0; i < size; ++i)
        out1[i] = in1[i] + in2[i];
}

在 lua 中,我想让这个函数使用 2 个表作为参数并返回 1 个表,就像下面这样:

local t = m.mix({1,2,3}, {4,5,6})

那么表 t 就应该是 {5,7,9},也就是这两个表的和。

我尝试使用内置的类型映射,但是我只能包装一个使用一个表作为参数和返回值的函数,如下所示:

%apply (float *INOUT, int) {(float *inout, int size)};

我该如何创建一个 SWIG 类型映射,使它可以处理两个表作为参数并返回一个表呢?

点赞
用户5224286
用户5224286

我找到了一种简单的方法来实现它。

%apply (float *INOUT, int) {(float *in1, int n1)};
%apply (float *INPUT, int) {(float *in2, int n2)};

对于我的目的来说,它似乎工作得很好。

2019-05-29 05:33:50