# 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
