Я использую SWIG, чтобы обернуть интерфейс C в Ruby. Учитывая две структуры
typedef struct Vertex {
int color, discoverd, finished;
struct Vertex *next;
} Vertex;
typedef struct Graph {
struct Vertex *vertex;
} Graph;
как я могу создать #each
метод, который возвращает текущую вершину, чтобы я мог обработать ее в Ruby. В настоящее время мой файл интерфейса SWIG содержит что-то вроде
%extend Graph {
void each() {
Vertex *v;
v = self->vertex;
while(v) {
rb_yield(Qnil); // how do I yield a vertex?
v = v->next;
}
}
};
Заранее спасибо за помощь.
- t6d