如何使用SWIG将数组typedef转换为Python?

时间:2013-11-18 07:25:00

标签: python swig

在C中,我可以写

foobar.h中:

typedef int ARR[2];

foobar.c但是:

#include "foobar.h"
ARR arr;

现在我有一个适当大小的数组arr。我可以在不知道大小的情况下获得该数组,我只知道类型ARR的名称。换句话说,头文件隐藏了ARR的实现细节 - 封装原则。

现在我想用SWIG将其翻译成Python。我有一个界面

foobar.i:

%{
#include "foobar.h"
%}

%include "foobar.h"

这对我来说就像上面一样,我应该能够使用来自foobar.h的界面而不必知道细节。也就是说,我想在Python命令行上以某种方式使用单词ARR来获取正确大小的数组(可能已初始化,在Python中所有内容都已初始化)。

我不想在Python中重复C语法。我想重复封装的原则。

我需要在界面中添加什么来实现这一目标?

我正在努力尝试,无法弄明白。

1 个答案:

答案 0 :(得分:1)

通过结构或类进行封装:您可能希望迟早暴露数组大小以帮助在python端进行测试,并添加初始化值为0,reset(0),添加两个等操作ARR阵列等。然后SWIG将为您做一切。