diff options
Diffstat (limited to 'Examples/python/callback/runme.py')
-rw-r--r-- | Examples/python/callback/runme.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/Examples/python/callback/runme.py b/Examples/python/callback/runme.py new file mode 100644 index 0000000..026e952 --- /dev/null +++ b/Examples/python/callback/runme.py @@ -0,0 +1,56 @@ +# 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 "------------------------------------------" + +# Lets 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" + |