diff options
Diffstat (limited to 'Examples/ruby/mark_function/example.cxx')
-rw-r--r-- | Examples/ruby/mark_function/example.cxx | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Examples/ruby/mark_function/example.cxx b/Examples/ruby/mark_function/example.cxx new file mode 100644 index 0000000..504e8fc --- /dev/null +++ b/Examples/ruby/mark_function/example.cxx @@ -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]; +} |