| # file: runme.rb |
| |
| # This file illustrates the manipulation of C++ references in Ruby. |
| |
| require 'example' |
| |
| # ----- Object creation ----- |
| |
| print "Creating some objects:\n" |
| a = Example::Vector.new(3,4,5) |
| b = Example::Vector.new(10,11,12) |
| |
| print " Created ", a.print, "\n" |
| print " Created ", b.print, "\n" |
| |
| # ----- Call an overloaded operator ----- |
| |
| # This calls the wrapper we placed around |
| # |
| # operator+(const Vector &a, const Vector &) |
| # |
| # It returns a new allocated object. |
| |
| print "Adding a+b\n" |
| c = Example::addv(a, b) |
| print " a+b = ", c.print, "\n" |
| |
| # ----- Create a vector array ----- |
| |
| print "Creating an array of vectors\n" |
| va = Example::VectorArray.new(10) |
| print " va = #{va}\n" |
| |
| # ----- Set some values in the array ----- |
| |
| # These operators copy the value of a and b to the vector array |
| va.set(0, a) |
| va.set(1, b) |
| |
| va.set(2, Example::addv(a,b)) |
| |
| c = Example::addv(a,b) |
| va.set(3, c) |
| |
| =begin commented out due to GC issue |
| |
| # Get some values from the array |
| |
| print "Getting some array values\n" |
| for i in 0...5 |
| print " va(#{i}) = ", va.get(i).print, "\n" |
| end |
| |
| # Watch under resource meter to check on this |
| print "Making sure we don't leak memory.\n" |
| for i in 0...1000000 |
| c = va.get(i % 10) |
| end |
| |
| =end |