Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C/C++ binding: передать структуру из C/C++ в Ruby 
:(
    Опции темы
qwerty455
  Дата 23.2.2012, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Привет. Подскажите пожалуйста, как отобразить структуру 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 не понимает что это структура - мы не сказали ей как называются ее поля и какого они типа. Но как это сделать, найти не удалось.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.