update swig on windows
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
CXXSRCS = example.cxx
|
||||
|
||||
include $(SRCDIR)../example.mk
|
||||
@@ -0,0 +1,3 @@
|
||||
/* File : example.cxx */
|
||||
|
||||
#include "example.h"
|
||||
22
winx64/bin/swigwin-4.0.0/Examples/octave/callback/example.h
Normal file
22
winx64/bin/swigwin-4.0.0/Examples/octave/callback/example.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* File : example.h */
|
||||
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
|
||||
class Callback {
|
||||
public:
|
||||
virtual ~Callback() { std::cout << "Callback::~Callback()" << std:: endl; }
|
||||
virtual void run() { std::cout << "Callback::run()" << std::endl; }
|
||||
};
|
||||
|
||||
|
||||
class Caller {
|
||||
private:
|
||||
Callback *_callback;
|
||||
public:
|
||||
Caller(): _callback(0) {}
|
||||
~Caller() { delCallback(); }
|
||||
void delCallback() { delete _callback; _callback = 0; }
|
||||
void setCallback(Callback *cb) { delCallback(); _callback = cb; }
|
||||
void call() { if (_callback) _callback->run(); }
|
||||
};
|
||||
13
winx64/bin/swigwin-4.0.0/Examples/octave/callback/example.i
Normal file
13
winx64/bin/swigwin-4.0.0/Examples/octave/callback/example.i
Normal file
@@ -0,0 +1,13 @@
|
||||
/* File : example.i */
|
||||
%module(directors="1") swigexample
|
||||
|
||||
%feature("autodoc", 1);
|
||||
|
||||
%{
|
||||
#include "example.h"
|
||||
%}
|
||||
|
||||
/* turn on director wrapping Callback */
|
||||
%feature("director") Callback;
|
||||
|
||||
%include "example.h"
|
||||
64
winx64/bin/swigwin-4.0.0/Examples/octave/callback/runme.m
Normal file
64
winx64/bin/swigwin-4.0.0/Examples/octave/callback/runme.m
Normal file
@@ -0,0 +1,64 @@
|
||||
# do not dump Octave core
|
||||
if exist("crash_dumps_octave_core", "builtin")
|
||||
crash_dumps_octave_core(0);
|
||||
endif
|
||||
|
||||
# This file illustrates the cross language polymorphism using directors.
|
||||
|
||||
swigexample
|
||||
|
||||
OctCallback=@() subclass(swigexample.Callback(),"run",@(self) printf("OctCallback.run()\n"));
|
||||
|
||||
# Create an Caller instance
|
||||
|
||||
caller = swigexample.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 = swigexample.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++ swigexample.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");
|
||||
Reference in New Issue
Block a user