Я искал несколько дней, пытаясь понять, как превратить массив структур в список Python. У меня есть функция, которая возвращает указатель на начало массива.
struct foo {
int member;
};
struct foo *bar() {
struct foo *t = malloc(sizeof(struct foo) * 4);
... do stuff with the structs...
return t;
}
После вызова функции из Python я получаю единую структуру, но попытка доступа к другим элементам массива вызывает ошибку:
foo = bar()
print foo[1].member
TypeError: 'foo' object does not support indexing
Я пытался использовать %array_class
, но безрезультатно. Я также пытался определить функцию как возвращающую массив в интерфейсном файле SWIG :
extern struct foo [ANY] bar();
. Документация SWIG довольно подробна, но я не могу понять это.