2
* Test Java director typemaps and features
5
%warnfilter(470); /* Thread/reentrant unsafe wrapping, consider returning by value instead. */
7
%module(directors="1") java_director
9
%typemap(javafinalize) SWIGTYPE %{
10
protected void finalize() {
11
// System.out.println("Finalizing " + this);
23
Quux() : memb_("default Quux ctor arg") {instances_++; }
24
Quux(const std::string &arg) : memb_(arg) {instances_++;}
25
Quux(const Quux &src) : memb_(src.memb_) {instances_++;}
26
virtual ~Quux() {instances_--;}
27
virtual const std::string &director_method() { return memb_; }
28
const std::string &member() { return memb_; }
29
static int instances() { return instances_; }
31
static int instances_;
35
int Quux::instances_ = 0;
39
typedef std::vector<Quux *> quuxvec_t;
41
QuuxContainer() : quuxen_()
44
for (quuxvec_t::iterator iter = quuxen_.begin(); iter != quuxen_.end(); ++iter) {
49
void push(Quux *elem) {
50
quuxen_.push_back(elem);
55
const std::string &invoke(int idx) {
56
return quuxen_[idx]->director_method();
59
return quuxen_.size();
66
%include "std_string.i"
68
%feature("director") Quux;
69
SWIG_DIRECTOR_OWNED(Quux)
74
Quux(const std::string &arg);
75
Quux(const Quux &src);
77
virtual const std::string &director_method();
78
const std::string &member();
79
static int instances();
86
void push(Quux *elem);
88
const std::string &invoke(int idx);
95
%typemap(javacode) hi::Quux1 %{
96
public boolean disconnectMethodCalled = false;
99
%typemap(directordisconnect, methodname="disconnect_director") hi::Quux1 %{
100
public void $methodname() {
103
// add in a flag to check this method is really called
104
disconnectMethodCalled = true;
111
struct Quux1 : public Quux {
112
Quux1(const std::string& arg) : Quux(arg) {}
113
virtual int ff(int i = 0) {return i;}