%module nested_workaround // "flatnested" emulates deprecated feature "nested_workaround" for the languages not supporting nested classes %feature ("flatnested"); %inline %{ class Outer { public: class Inner { int val; public: Inner(int v = 0) : val(v) {} void setValue(int v) { val = v; } int getValue() const { return val; } }; Inner createInner(int v) const { return Inner(v); } int getInnerValue(const Inner& i) const { return i.getValue(); } Inner doubleInnerValue(Inner inner) { inner.setValue(inner.getValue() * 2); return inner; } }; %}