我有一个遗留的C/C++结构体,像这样(还有许多其他成员):
struct S {
char one_name[MAX_LEN];
char names[N_NAMES][MAX_LEN];
}
还有一个创建这些的C函数:
S *get_S(...)
我希望通过SWIG导出S和name,以便我可以在python中执行以下操作:
s = MyModule.get_S()
print s.one_name # I have this working
print s.names[1] # should print the 2nd string, this is harder
我想我需要某种类型映射,但我对swig还不熟悉。我可以使用wrapped_array模板来处理one_name
,例如SWIG/python array inside structure,但我不确定如何将其扩展为字符串数组。我只需从python中读取这些字符串(如上所述),而不是写入它们。我可以使用访问器来处理它,因此python代码看起来像:
print s.get_name(i) # prints the ith name
然而,我更喜欢使用数组接口,因为它与C语言接口相似。