Initial commit of Octave module.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10290 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
50b1578e19
commit
393391965c
275 changed files with 14004 additions and 5 deletions
63
Examples/octave/callback/runme.m
Normal file
63
Examples/octave/callback/runme.m
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
# file: runme.m
|
||||
|
||||
# This file illustrates the cross language polymorphism using directors.
|
||||
|
||||
example
|
||||
|
||||
OctCallback=@() subclass(example.Callback(), \
|
||||
'run',@(self) printf("OctCallback.run()\n"));
|
||||
|
||||
# Create an Caller instance
|
||||
|
||||
caller = example.Caller();
|
||||
|
||||
# Add a simple C++ callback (caller owns the callback, so
|
||||
# we disown it first)
|
||||
|
||||
printf("Adding and calling a normal C++ callback\n");
|
||||
printf("----------------------------------------\n");
|
||||
|
||||
callback = example.Callback().__disown();
|
||||
caller.setCallback(callback);
|
||||
caller.call();
|
||||
caller.delCallback();
|
||||
|
||||
printf("Adding and calling a Octave callback\n");
|
||||
printf("------------------------------------\n");
|
||||
|
||||
# Add a Octave callback (caller owns the callback, so we
|
||||
# disown it first by calling __disown).
|
||||
|
||||
caller.setCallback(OctCallback().__disown())
|
||||
caller.call();
|
||||
caller.delCallback();
|
||||
|
||||
printf("Adding and calling another Octave callback\n");
|
||||
printf("------------------------------------------\n");
|
||||
|
||||
# Let's do the same but use the weak reference this time.
|
||||
|
||||
callback = OctCallback().__disown();
|
||||
caller.setCallback(callback);
|
||||
caller.call();
|
||||
caller.delCallback();
|
||||
|
||||
# careful-- using callback here may cause problems; octave_swig_type still
|
||||
# exists, but is holding a destroyed object (the C++ example.Callback).
|
||||
# to manually drop the octave-side reference, you can use
|
||||
clear callback;
|
||||
|
||||
# Let's call them directly now
|
||||
|
||||
printf("Calling Octave and C++ callbacks directly\n");
|
||||
printf("------------------------------------------\n");
|
||||
|
||||
a = OctCallback();
|
||||
a.run();
|
||||
a.Callback.run();
|
||||
|
||||
|
||||
# All done.
|
||||
|
||||
printf("octave exit\n");
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue