mirror of https://github.com/swig/swig
59 lines
1.2 KiB
Python
59 lines
1.2 KiB
Python
# file: runme.py
|
|
|
|
# This file illustrates the cross language polymorphism using directors.
|
|
|
|
import example
|
|
|
|
|
|
# CEO class, which overrides Employee::getPosition().
|
|
|
|
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"
|
|
|