diff options
Diffstat (limited to 'Examples/ruby/reference/runme.rb')
-rw-r--r-- | Examples/ruby/reference/runme.rb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Examples/ruby/reference/runme.rb b/Examples/ruby/reference/runme.rb new file mode 100644 index 0000000..67b76fc --- /dev/null +++ b/Examples/ruby/reference/runme.rb @@ -0,0 +1,60 @@ +# 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 |