Структурный массив SWIG Python

Я искал несколько дней, пытаясь понять, как превратить массив структур в список 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 довольно подробна, но я не могу понять это.

7
задан Flexo 17 August 2012 в 10:16
поделиться