/trunk/Examples/python/callback/runme.py
Python | 56 lines | 29 code | 18 blank | 9 comment | 0 complexity | deeb3da6ac2683766a966f86bc6b0023 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- # 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"