mirror of https://github.com/swig/swig
120 lines
3.4 KiB
OpenEdge ABL
120 lines
3.4 KiB
OpenEdge ABL
// 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;
|
|
%warnfilter(SWIGWARN_TYPE_NSPACE_SETTING) Outer::Inner2::NoNSpacePlease;
|
|
|
|
%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, Channel4 };
|
|
enum { ColorEnumVal1, ColorEnumVal2 = 0x33, ColorEnumVal3, ColorEnumVal4 };
|
|
|
|
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() {}
|
|
};
|
|
|
|
enum GlobalEnum { aaa, bbb, ccc };
|
|
void takeGlobalEnum(GlobalEnum) {}
|
|
|
|
void test_classes(Outer::SomeClass c, Outer::Inner2::Color cc) {}
|
|
%}
|
|
|
|
#else
|
|
//#warning nspace feature not yet supported in this target language
|
|
#endif
|
|
|