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