Мне было интересно, как правильно обернуть массив строк в C в список Python, используя SWIG.
Массив находится внутри структуры:
typedef struct {
char** my_array;
char* some_string;
}Foo;
SWIG автоматически переносит some_string на строку Python.
Что я должен поместить в файл интерфейса SWIG, чтобы я мог получить доступ к my_array в Python как обычный список строк Python ['string1', 'string2']?
Я использовал typemap как sugested:
%typemap(python,out) char** {
int len,i;
len = 0;
while ($1[len]) len++;
$result = PyList_New(len);
for (i = 0; i < len; i++) {
PyList_SetItem($result,i,PyString_FromString($1[i]));
}
}
Но это все равно не сработало. В Python переменная my_array отображается как SwigPyObject: _20afba0100000000_p_p_char.
Интересно, это потому, что char ** находится внутри структуры? Может мне нужно сообщить об этом SWIG?
Есть идеи?