| # 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 %s" % a.cprint()) |
| print(" Created %s" % 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 = %s" % 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 = %s" % 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 range(0, 1000000): |
| c = va.get(i % 10) |
| |
| # ----- Clean up ----- |
| print("Cleaning up") |
| |
| del va |
| del a |
| del b |