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