| # 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" |