summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/UseSWIG/runme.rb
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2018-02-15 13:49:44 (GMT)
committerKitware Robot <kwrobot@kitware.com>2018-02-15 13:50:29 (GMT)
commita2ec98b7d97df67d50e90e790b2bd235f7c278cc (patch)
tree769dda972b0f7964a004fe65e4f44554ccaa5d0e /Tests/RunCMake/UseSWIG/runme.rb
parentb5d18cbd7777cba22f844b0b3672db20ab21c836 (diff)
parent0bef9eb410566aa10536331d086d4a3ee265a526 (diff)
downloadCMake-a2ec98b7d97df67d50e90e790b2bd235f7c278cc.zip
CMake-a2ec98b7d97df67d50e90e790b2bd235f7c278cc.tar.gz
CMake-a2ec98b7d97df67d50e90e790b2bd235f7c278cc.tar.bz2
Merge topic 'enhanced-UseSWIG-Module'
0bef9eb4 UseSWIG: modernize module d6048bd1 UseSWIG: Re-work test framework Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1707
Diffstat (limited to 'Tests/RunCMake/UseSWIG/runme.rb')
-rw-r--r--Tests/RunCMake/UseSWIG/runme.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/Tests/RunCMake/UseSWIG/runme.rb b/Tests/RunCMake/UseSWIG/runme.rb
new file mode 100644
index 0000000..de73bcd
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/runme.rb
@@ -0,0 +1,49 @@
+# file: runme.rb
+
+# This file illustrates the C++ interface created by SWIG.
+# All of our C++ classes get converted into Ruby classes.
+
+require 'example'
+
+# ----- Object creation -----
+
+print "Creating some objects:\n"
+c = Example::Circle.new(10)
+print " Created circle #{c}\n"
+s = Example::Square.new(10)
+print " Created square #{s}\n"
+
+# ----- Access a static member -----
+
+print "\nA total of #{Example::Shape.nshapes} shapes were created\n"
+
+# ----- Member data access -----
+
+# Set the location of the object
+
+# Notice how we can do this using functions specific to
+# the 'Circle' class.
+c.x = 20
+c.y = 30
+
+# Now use the same functions in the base class
+s.x = -10
+s.y = 5
+
+print "\nHere is their current position:\n"
+print " Circle = (", c.x, ",", c.y, ")\n"
+print " Square = (", s.x, ",", s.y, ")\n"
+
+# ----- Call some methods -----
+
+print "\nHere are some properties of the shapes:\n"
+for o in [c, s]
+ print " #{o}\n"
+ print " area = ", o.area, "\n"
+ print " perimeter = ", o.perimeter, "\n"
+end
+# Notice how the Shape#area() and Shape#perimeter() functions really
+# invoke the appropriate virtual method on each object.
+
+print "\n", Example::Shape.nshapes," shapes remain\n"
+print "Goodbye\n"