// Test the nspace feature %module nspace // 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; %nonspace Outer::Inner2::NoNSpacePlease; %nonspace Outer::Inner2::NoNSpacePlease::ReallyNoNSpaceEnum; %copyctor; %ignore Outer::Inner2::Color::Color(); #define CONSTANT100 100 %inline %{ namespace Outer { class namespce { }; namespace Inner1 { enum Channel { Diffuse, Specular = 0x10, Transmission1 }; enum { ColorEnumVal1, ColorEnumVal2 = 0x11, ColorEnumVal3 }; struct Color { static Color* create() { return new Color(); } enum Channel { Diffuse, Specular = 0x20, Transmission }; enum { ColorEnumVal1, ColorEnumVal2 = 0x22, ColorEnumVal3 }; int instanceMemberVariable; static int staticMemberVariable; static const int staticConstMemberVariable = 222; static const Channel staticConstEnumMemberVariable = Transmission; void colorInstanceMethod(double d) {} static void colorStaticMethod(double d) {} }; // Color int Color::staticMemberVariable = 0; Color namespaceFunction(Color k) { return k; } int namespaceVar = 0; } // Inner1 namespace Inner2 { enum Channel { Diffuse, Specular = 0x30, Transmission2 }; struct Color { Color() : instanceMemberVariable(0) {} static Color* create() { return new Color(); } enum Channel { Diffuse, Specular = 0x40, Transmission }; enum { ColorEnumVal1, ColorEnumVal2 = 0x33, ColorEnumVal3 }; int instanceMemberVariable; static int staticMemberVariable; static const int staticConstMemberVariable = 333; static const Channel staticConstEnumMemberVariable = Transmission; 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) {} }; // Color int Color::staticMemberVariable = 0; class NoNSpacePlease { public: enum NoNSpaceEnum { NoNspace1 = 1, NoNspace2 = 10 }; enum ReallyNoNSpaceEnum { ReallyNoNspace1 = 1, ReallyNoNspace2 = 10 }; static int noNspaceStaticFunc() { return 10; } }; } // Inner2 // Derived class namespace Inner3 { struct Blue : Inner2::Color { void blueInstanceMethod() {} }; } namespace Inner4 { struct Blue : Inner2::Color { void blueInstanceMethod() {} }; } class SomeClass { public: Inner1::Color::Channel GetInner1ColorChannel() { return Inner1::Color::Transmission; } Inner2::Color::Channel GetInner2ColorChannel() { return Inner2::Color::Transmission; } Inner1::Channel GetInner1Channel() { return Inner1::Transmission1; } Inner2::Channel GetInner2Channel() { return Inner2::Transmission2; } }; // SomeClass } // Outer namespace Outer { struct MyWorldPart2 {}; } struct GlobalClass { void gmethod() {} }; void test_classes(Outer::SomeClass c, Outer::Inner2::Color cc) {} %} #else //#warning nspace feature not yet supported in this target language #endif