/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/ruby/mark_function/example.i
37 строк
753 B
Charlie Savage
New example for Ruby that shows how to implement a mark function. Also makes use of the tracking objects funcitonality.
25 сен 2005, 01:53
25 сен 2005, 01:53
b4812f0
Код
Авторство
О чём код?
%module example %{ #include "example.h" %} /* Tell SWIG that create_animal creates a new object */ %newobject Zoo::create_animal; /* Keep track of mappings between C/C++ structs/classes and Ruby objects so we can implement a mark function. */ %trackobjects; /* Specify the mark function */ %markfunc Zoo "mark_Zoo"; %include "example.h" %header %{ static void mark_Zoo(void* ptr) { Zoo* zoo = (Zoo*) ptr; /* Loop over each object and tell the garbage collector that we are holding a reference to them. */ int count = zoo->get_num_animals(); for(int i = 0; i < count; ++i) { Animal* animal = zoo->get_animal(i); VALUE object = SWIG_RubyInstanceFor(animal); if (object != Qnil) { rb_gc_mark(object); } } } %}