2 * Test Java director typemaps and features
5 %warnfilter(SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR); /* 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;}
118 virtual ~JObjectTest() {}
119 // Test special Java JNI type jobject
120 virtual jobject foo(jobject x) { return x; }