%module conversion_ns_template %{ namespace oss { struct Hi { Hi(){} Hi(int){} }; enum Test {One, Two}; template <Test> struct Foo { Foo(){} }; template <Test T> struct Bar { Bar(){ } Bar(int){ } #if !defined(__SUNPRO_CC) operator int() { return 0; } #endif operator int&() { static int num = 0; return num; } #if !defined(__SUNPRO_CC) operator Foo<T>() { return Foo<T>(); } #endif operator Foo<T>&() { return *(new Foo<T>()); } }; } %} namespace oss { enum Test {One, Two}; // these works %ignore Hi::Hi(); %rename(create) Hi::Hi(int); struct Hi { Hi(); Hi(int); }; template <Test> struct Foo { Foo(); }; // these works %rename(hello1) Bar<One>::operator int&(); %ignore Bar<One>::operator int(); %rename(hello2) Bar<One>::operator Foo<oss::One>&(); %ignore Bar<One>::operator Foo<oss::One>(); // these don't %ignore Bar<One>::Bar(); %rename(Bar_create) Bar<One>::Bar(int); template <Test T> struct Bar { Bar(); Bar(int); operator int(); operator int&(); operator Foo<T>(); operator Foo<T>&(); }; } namespace oss { %template(Foo_One) Foo<One>; %template(Bar_One) Bar<One>; }
Generated by dwww version 1.15 on Tue Jul 2 00:13:01 CEST 2024.