1 %module(directors="1") director_wombat
2 #pragma SWIG nowarn=SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR
3 
4 %feature(director) Bar;
5 %feature(director) Foo<int>;
6 
7 %inline %{
8 template<typename T> class Foo
9 {
10 public:
Foo()11                         Foo()
12                         { /* NOP */ }
~Foo()13   virtual              ~Foo()
14                         { /* NOP */ }
meth(T param)15   virtual int           meth(T param)
16                         { return param; }
17 };
18 
19 typedef Foo<int>        Foo_int;
20 
21 class Bar
22 {
23 public:
24   virtual              ~Bar();
25   virtual Foo_int      *meth();
26   virtual void          foo_meth_ref(Foo_int &, int);
27   virtual void          foo_meth_ptr(Foo_int *, int);
28   virtual void          foo_meth_val(Foo_int, int);
29   virtual void          foo_meth_cref(const Foo_int &, int);
30   virtual void          foo_meth_cptr(const Foo_int *, int);
31 };
32 
~Bar()33 Bar::~Bar()
34 { /* NOP */ }
35 
36 Foo_int *
meth()37 Bar::meth()
38 {
39   return new Foo_int();
40 }
41 
foo_meth_ref(Foo_int & arg,int param)42 void Bar::foo_meth_ref(Foo_int &arg, int param) { }
foo_meth_ptr(Foo_int * arg,int param)43 void Bar::foo_meth_ptr(Foo_int *arg, int param) { }
foo_meth_val(Foo_int arg,int param)44 void Bar::foo_meth_val(Foo_int arg, int param) { }
foo_meth_cref(const Foo_int & arg,int param)45 void Bar::foo_meth_cref(const Foo_int &arg, int param) { }
foo_meth_cptr(const Foo_int * arg,int param)46 void Bar::foo_meth_cptr(const Foo_int *arg, int param) { }
47 %}
48 
49 %template(Foo_integers) Foo<int>;
50