%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; } } // Note not: Utilities::Bucket::operator== %rename("equals") Utilities::operator==; %ignore Utilities::operator<<; namespace Utilities { %ignore operator>>; } %inline %{ #include 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 ); } friend std::ostream& operator<<(std::ostream&, const Bucket &); friend std::ostream& operator>>(std::ostream&, const Bucket &); private: int m_left; }; } %}