// Test the nspace feature and %extend %module nspace_extend // nspace feature only supported by these languages #if defined(SWIGJAVA) || defined(SWIGCSHARP) || defined(SWIGD) || defined(SWIGLUA) || defined(SWIGJAVASCRIPT) #if defined(SWIGJAVA) SWIG_JAVABODY_PROXY(public, public, SWIGTYPE) #endif %nspace; %extend Outer::Inner1::Color { Color() { return new Outer::Inner1::Color(); } virtual ~Color() { delete $self; } static Color* create() { return new Outer::Inner1::Color(); } Color(const Color& other) { return new Outer::Inner1::Color(other); } void colorInstanceMethod(double d) {} static void colorStaticMethod(double d) {} } %inline %{ namespace Outer { namespace Inner1 { struct Color { }; } namespace Inner2 { struct Color { }; } } %} %extend Outer::Inner2::Color { Color() { return new Outer::Inner2::Color(); } ~Color() { delete $self; } static Color* create() { return new Outer::Inner2::Color(); } Color(const Color& other) { return new Outer::Inner2::Color(other); } void colorInstanceMethod(double d) {} static void colorStaticMethod(double d) {} void colors(const Inner1::Color& col1a, const Outer::Inner1::Color& col1b, const Color &col2a, const Inner2::Color& col2b, const Outer::Inner2::Color& col2c) {} } #else //#warning nspace feature not yet supported in this target language #endif