如何仅在一个函数的参数上应用类型映射?

时间:2014-02-21 17:27:01

标签: c++ swig

我正在尝试使用Java为C ++解决方案创建一个包装器。

在这个C ++项目中有两个功能:

int func1(const void* b);
int func2(const void* b);

我只需要在int func2(const void* b);

上应用此规则(typemap)
%apply char *BYTE { const void* b };

这是一个约束,因为const void *使用不同于一个函数。

备注:我无权将fucn1的参数从b重命名为其他内容。

谢谢你。

1 个答案:

答案 0 :(得分:3)

在func1和func2的声明之间尝试%clear:

%{
#include "funcs.h"
%}

%apply char *BYTE { const void* b };
int func1(const void* b);
%clear const void* b;

int func2(const void* b);

另请注意,声明中变量的名称不会影响被调用代码,即您应该可以执行

%{
#include "funcs.h"
%}

%apply char *BYTE { const void* b };
int func1(const void* b);
int func2(const void* c);

(虽然标题声明第一个arg为b,C ++ args都是位置的,但它们唯一重要的地方是函数体的定义(不是声明),这不是SWIG使用的,因此上面应该有效)。