| # file: runme.py |
| |
| # This file illustrates the manipulation of C++ references in Python |
| |
| import example |
| |
| # ----- Object creation ----- |
| |
| print "Creating some objects:" |
| a = example.Vector(3,4,5) |
| b = example.Vector(10,11,12) |
| |
| print " Created",a.cprint() |
| print " Created",b.cprint() |
| |
| # ----- 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" |
| c = example.addv(a,b) |
| print " a+b =", c.cprint() |
| |
| # Note: Unless we free the result, a memory leak will occur |
| del c |
| |
| # ----- Create a vector array ----- |
| |
| # Note: Using the high-level interface here |
| print "Creating an array of vectors" |
| va = example.VectorArray(10) |
| print " va = ",va |
| |
| # ----- 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)) |
| |
| # Get some values from the array |
| |
| print "Getting some array values" |
| for i in range(0,5): |
| print " va(%d) = %s" % (i, va.get(i).cprint()) |
| |
| # Watch under resource meter to check on this |
| print "Making sure we don't leak memory." |
| for i in xrange(0,1000000): |
| c = va.get(i % 10) |
| |
| # ----- Clean up ----- |
| print "Cleaning up" |
| |
| del va |
| del a |
| del b |
| |