# file: runme.py

# This file illustrates the shadow-class C++ interface generated
# by SWIG.

import example

# ----- Object creation -----

print "Creating some objects:"
c = example.Circle(10)
print "    Created circle", c
s = example.Square(10)
print "    Created square", s

# ----- Access a static member -----

print "\nA total of", example.cvar.Shape_nshapes,"shapes were created"

# ----- Member data access -----

# Set the location of the object

c.x = 20
c.y = 30

s.x = -10
s.y = 5

print "\nHere is their current position:"
print "    Circle = (%f, %f)" % (c.x,c.y)
print "    Square = (%f, %f)" % (s.x,s.y)

# ----- Call some methods -----

print "\nHere are some properties of the shapes:"
for o in [c,s]:
      print "   ", o
      print "        area      = ", o.area()
      print "        perimeter = ", o.perimeter()

print "\nGuess I'll clean up now"

# Note: this invokes the virtual destructor
del c
del s

s = 3
print example.cvar.Shape_nshapes,"shapes remain"
print "Goodbye"

