%module(directors="1") director_finalizer %warnfilter(SWIGWARN_GO_NAME_CONFLICT); /* Ignoring 'deleteFoo' due to Go name ('DeleteFoo') conflict with '~Foo' */ %{ int status = 0; class Foo { public: virtual ~Foo() { orStatus(1); } virtual void orStatus(int x) { status |= x; } }; void deleteFoo(Foo *f) { delete f; } Foo *launder(Foo *f) { return f; } int getStatus() { return status; } void resetStatus() { status = 0; } %} %feature("director") Foo; class Foo { public: virtual ~Foo(); virtual void orStatus(int x); }; void deleteFoo(Foo *f); int getStatus(); Foo *launder(Foo *f); void resetStatus();