# file: runme.py

# This file illustrates the cross language polymorphism using directors.

import example


class PyCallback(example.Callback):

    def __init__(self):
        example.Callback.__init__(self)

    def run(self):
        print("PyCallback.run()")

# Create an Caller instance

caller = example.Caller()

# Add a simple C++ callback (caller owns the callback, so
# we disown it first by clearing the .thisown flag).

print("Adding and calling a normal C++ callback")
print("----------------------------------------")

callback = example.Callback()
callback.thisown = 0
caller.setCallback(callback)
caller.call()
caller.delCallback()

print("")
print("Adding and calling a Python callback")
print("------------------------------------")

# Add a Python callback (caller owns the callback, so we
# disown it first by calling __disown__).

caller.setCallback(PyCallback().__disown__())
caller.call()
caller.delCallback()

print("")
print("Adding and calling another Python callback")
print("------------------------------------------")

# Let's do the same but use the weak reference this time.

callback = PyCallback().__disown__()
caller.setCallback(callback)
caller.call()
caller.delCallback()

# All done.

print("")
print("python exit")
