« Return to Thread: SWIG and Ruby Arrays

Fwd: SWIG and Ruby Arrays

by Bryan Richardson-4 :: Rate this Message:

Reply to Author | View in Thread

Hello all,

I'm new to SWIG, so please bear with me!  :)  I have a C program that among other things defines a structure and has a method that accepts an array of those structures, similar to the following:

/* people.h header file */
typedef struct {
  char* name;
} Person;

void say_hello(Person[] people);

/* source file */
#include <stdio.h>
#include "people.h"

void say_hello(int count, Person* people) {
  int index;
  for (index = 0; index < count; index++) {
    printf("Hello, my name is %s\n", people[index]);
  }
}

I'm using SWIG to wrap this library (in an Example module) so I can call it from Ruby.  From Ruby, I can create new Person objects and set their names no problem.  However, when I put them into a Ruby array and then try to send that array to the say_hello method I get an error:

p1 = Example::Person.new
p1.name = "Bryan"
p2 = Person.new
p2.name = "John"

a = Array.new
a << p1
a << p2

Example.say_hello(a.length, a)

TypeError: in method 'say_hello', argument 2 of type 'Person *'

Can anyone tell me how I can configure SWIG such that I can create and pass arrays like this?

--
Thanks!
Bryan




-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Swig-user mailing list
Swig-user@...
https://lists.sourceforge.net/lists/listinfo/swig-user

 « Return to Thread: SWIG and Ruby Arrays

LightInTheBox - Buy quality products at wholesale price