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 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_RubyRemoveTracking for the zoo */
SWIG_RubyRemoveTracking(ptr);

/* Now free the zoo which will free the animals it contains */
delete zoo;
}
%}
diff --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 */