%module(directors="1") director_wombat #pragma SWIG nowarn=SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR %feature(director) Bar; %feature(director) Foo; %inline %{ template class Foo { public: Foo() { /* NOP */ } virtual ~Foo() { /* NOP */ } virtual int meth(T param) { return param; } }; typedef Foo Foo_int; class Bar { public: virtual ~Bar(); virtual Foo_int *meth(); virtual void foo_meth_ref(Foo_int &, int); virtual void foo_meth_ptr(Foo_int *, int); virtual void foo_meth_val(Foo_int, int); virtual void foo_meth_cref(const Foo_int &, int); virtual void foo_meth_cptr(const Foo_int *, int); }; Bar::~Bar() { /* NOP */ } Foo_int * Bar::meth() { return new Foo_int(); } void Bar::foo_meth_ref(Foo_int &arg, int param) { } void Bar::foo_meth_ptr(Foo_int *arg, int param) { } void Bar::foo_meth_val(Foo_int arg, int param) { } void Bar::foo_meth_cref(const Foo_int &arg, int param) { } void Bar::foo_meth_cptr(const Foo_int *arg, int param) { } %} %template(Foo_integers) Foo;