%module rename_scope %inline %{ namespace oss { enum Polarization { UnaryPolarization, BinaryPolarization }; template struct Interface_ { }; } %} namespace oss { // Interface_ %template(Interface_UP) Interface_; %template(Interface_BP) Interface_; } %inline %{ namespace oss { namespace interfaces { template struct Natural : Interface_

{ int test(void) { return 1; } }; } } %} namespace oss { namespace interfaces { %rename(rtest) Natural::test; %rename(rtest) Natural::test; // Natural %template(Natural_UP) Natural; %template(Natural_BP) Natural; } } %rename("equals") operator==; %inline %{ namespace Utilities { class Bucket { public: Bucket() : m_left(0) {} friend bool operator==(const Bucket& lhs, const Bucket& rhs){ return ( rhs.m_left == lhs.m_left ); } private: int m_left; }; } %}