mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-01-31 15:12:55 -08:00
58 lines
1.2 KiB
Python
58 lines
1.2 KiB
Python
# 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")
|