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