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