New example for Ruby that shows how to implement a mark function. Also makes use of the tracking objects funcitonality.

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7519 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Charlie Savage 2005-09-24 21:53:53 +00:00
commit b4812f0029
6 changed files with 343 additions and 0 deletions

View file

@ -0,0 +1,61 @@
#include "example.h"
Animal::Animal(const char* name) : name_(name)
{
}
Animal::~Animal()
{
name_ = "Destroyed";
}
/* Return the animal's name */
const char* Animal::get_name() const
{
return name_.c_str();
}
Zoo::Zoo()
{
}
Zoo::~Zoo()
{
return;
}
/* Create a new animal. */
Animal* Zoo::create_animal(const char* name)
{
return new Animal(name);
}
/* Add a new animal to the zoo. */
void Zoo::add_animal(Animal* animal)
{
animals.push_back(animal);
}
Animal* Zoo::remove_animal(size_t i)
{
/* Note a production implementation should check
for out of range errors. */
Animal* result = this->animals[i];
IterType iter = this->animals.begin();
std::advance(iter, i);
this->animals.erase(iter);
return result;
}
/* Return the number of animals in the zoo. */
size_t Zoo::get_num_animals() const
{
return animals.size();
}
/* Return a pointer to the ith animal */
Animal* Zoo::get_animal(size_t i) const
{
return animals[i];
}