Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > C/C++ binding: передать структуру из C/C++ в Ruby


Автор: qwerty455 23.2.2012, 16:32
Привет. Подскажите пожалуйста, как отобразить структуру C/C++ в руби? Читала вот это: http://forum.vingrad.ru/topic-139502.html но тут показано только для методов. С методами понятно. А со структурами - нет. Попыталась сделать по аналогии с найденным в инете:

Код
myclass = rb_define_class("Myclass", 0);

...

typedef struct nya
{
    char const* name;
    int age;
} Nya;

...

Nya* p;
VALUE vnya;

p = (Nya*)(ALLOC(Nya));
p->name = "Masha";
p->age = 24;

vnya = Data_Wrap_Struct(myclass, 0, free, p);

rb_eval_string("def foo( *a ) p a end"); // Эта функция должна напечатать структуру

rb_funcall(0, rb_intern("foo"), 1, vnya); // Тут мы ее вызываем и передаем объект структуры


Но Ruby-функция воспринимает это как обычный указатель. Выводит на экран просто численное представление адреса. Очевидно что Ruby не понимает что это структура - мы не сказали ей как называются ее поля и какого они типа. Но как это сделать, найти не удалось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)