diff --git a/Doc/Manual/Ruby.html b/Doc/Manual/Ruby.html
index 7360f732d..2070db0c0 100644
--- a/Doc/Manual/Ruby.html
+++ b/Doc/Manual/Ruby.html
@@ -10567,7 +10567,7 @@ existing Ruby object to the destroyed C++ object and raise an exception.
%module example+
%{
#include "example.h"
%}
/* Specify that ownership is transferred to the zoo
when calling add_animal */
%apply SWIGTYPE *DISOWN { Animal* animal };
/* Track objects */
%trackobjects;
/* Specify the mark function */
%freefunc Zoo "free_Zoo";
%include "example.h"
%header %{
static void free_Zoo(void* ptr) {
Zoo* zoo = (Zoo*) ptr;
/* Loop over each animal */
int count = zoo->get_num_animals();
for(int i = 0; i < count; ++i) {
/* Get an animal */
Animal* animal = zoo->get_animal(i);
/* Unlink the Ruby object from the C++ object */
SWIG_RubyUnlinkObjects(animal);
/* Now remove the tracking for this animal */
SWIG_RubyRemoveTracking(animal);
}
/* Now call SWIG_RemoveMapping for the zoo */
SWIG_RemoveMapping(ptr);
/* Now free the zoo which will free the animals it contains */
delete zoo;
}
%}
%module examplediff --git a/Examples/ruby/free_function/example.i b/Examples/ruby/free_function/example.i index 5ab29bd58..a446b3f99 100644 --- a/Examples/ruby/free_function/example.i +++ b/Examples/ruby/free_function/example.i @@ -20,7 +20,7 @@ static void free_Zoo(void* ptr) { Zoo* zoo = (Zoo*) ptr; - /* Loop over each object and call SWIG_RemoveMapping */ + /* Loop over each object and call SWIG_RubyRemoveTracking */ int count = zoo->get_num_animals(); for(int i = 0; i < count; ++i) { @@ -32,7 +32,7 @@ SWIG_RubyRemoveTracking(animal); } - /* Now call SWIG_RemoveMapping for the zoo */ + /* Now call SWIG_RubyRemoveTracking for the zoo */ SWIG_RubyRemoveTracking(ptr); /* Now free the zoo which will free the animals it contains */
%{
#include "example.h"
%}
/* Specify that ownership is transferred to the zoo
when calling add_animal */
%apply SWIGTYPE *DISOWN { Animal* animal };
/* Track objects */
%trackobjects;
/* Specify the mark function */
%freefunc Zoo "free_Zoo";
%include "example.h"
%header %{
static void free_Zoo(void* ptr) {
Zoo* zoo = (Zoo*) ptr;
/* Loop over each animal */
int count = zoo->get_num_animals();
for(int i = 0; i < count; ++i) {
/* Get an animal */
Animal* animal = zoo->get_animal(i);
/* Unlink the Ruby object from the C++ object */
SWIG_RubyUnlinkObjects(animal);
/* Now remove the tracking for this animal */
SWIG_RubyRemoveTracking(animal);
}
/* Now call SWIG_RubyRemoveTracking for the zoo */
SWIG_RubyRemoveTracking(ptr);
/* Now free the zoo which will free the animals it contains */
delete zoo;
}
%}