%module namespace_nested %warnfilter(SWIGWARN_RUBY_WRONG_NAME) hello::hi::hi0; /* Ruby, wrong class name */ %warnfilter(SWIGWARN_RUBY_WRONG_NAME) oss::hi1; /* Ruby, wrong class name */ %inline %{ namespace hello { namespace hi { struct hi0 { }; } template < class T1 > struct Hi : T1 { }; } %} namespace hello { %template(Hi_hi0) Hi; } %inline %{ namespace hello { // // This works // // typedef Hi Hi0; // // This doesn't work // typedef Hi Hi0; } namespace oss { template struct hi1 : T1 { }; typedef hello::Hi h0; } %} namespace oss { %template(hi1_hi0) hi1; } %rename(MyFoo) geos::algorithm::Foo; %inline { namespace geos { namespace algorithm { class Foo { }; } namespace planargraph { // geos.planargraph namespace algorithm { // geos.planargraph.algorithm class Bar { }; } namespace algorithm { // geos.planargraph.algorithm class Foo { public: typedef int size_type; }; } namespace algorithm { // geos.planargraph.algorithm class ConnectedSubgraphFinder : public Foo { public: ConnectedSubgraphFinder(size_type) { } }; } } } }