aboutsummaryrefslogtreecommitdiff
path: root/Examples/ruby/mpointer/runme.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/ruby/mpointer/runme.rb')
-rw-r--r--Examples/ruby/mpointer/runme.rb48
1 files changed, 48 insertions, 0 deletions
diff --git a/Examples/ruby/mpointer/runme.rb b/Examples/ruby/mpointer/runme.rb
new file mode 100644
index 000000000..e11aa68cb
--- /dev/null
+++ b/Examples/ruby/mpointer/runme.rb
@@ -0,0 +1,48 @@
+# Example using pointers to member functions
+
+require 'example'
+
+# Get the pointers
+
+area_pt = Example::areapt
+perim_pt = Example::perimeterpt
+
+puts "area_pt = #{area_pt}"
+puts "perim_pt = #{perim_pt}"
+
+# Create some objects
+
+c = Example::Circle.new(4)
+s = Example::Square.new(10)
+
+# Do some calculations
+
+puts "Circle area = #{Example::do_op(c, area_pt)}"
+puts "Circle perim = #{Example::do_op(c, perim_pt)}"
+puts "Square area = #{Example::do_op(s, area_pt)}"
+puts "Square perim = #{Example::do_op(s, perim_pt)}"
+
+puts "areavar = #{Example::areavar}"
+puts "perimetervar = #{Example::perimetervar}"
+
+# Try the variables
+puts "Circle area = #{Example::do_op(c, Example::areavar)}"
+puts "Circle perim = #{Example::do_op(c, Example::perimetervar)}"
+puts "Square area = #{Example::do_op(s, Example::areavar)}"
+puts "Square perim = #{Example::do_op(s, Example::perimetervar)}"
+
+# Modify one of the variables
+Example::areavar = perim_pt
+
+puts "Circle perimeter = #{Example::do_op(c, Example::areavar)}"
+
+# Try the constants
+
+puts "Example::AREAPT = #{Example::AREAPT}"
+puts "Example::PERIMPT= #{Example::PERIMPT}"
+puts "Example::NULLPT = #{Example::NULLPT}"
+
+puts "Circle area = #{Example::do_op(c, Example::AREAPT)}"
+puts "Circle perim = #{Example::do_op(c, Example::PERIMPT)}"
+puts "Square area = #{Example::do_op(s, Example::AREAPT)}"
+puts "Square perim = #{Example::do_op(s, Example::PERIMPT)}"