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:
parent
48aa345440
commit
b4812f0029
6 changed files with 343 additions and 0 deletions
61
Examples/ruby/mark_function/example.cxx
Normal file
61
Examples/ruby/mark_function/example.cxx
Normal 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];
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue