mirror of https://github.com/swig/swig
142 lines
2.8 KiB
OpenEdge ABL
142 lines
2.8 KiB
OpenEdge ABL
%module cpp11_final_class
|
|
|
|
%warnfilter(SWIGWARN_PARSE_KEYWORD) final; // 'final' is a java keyword, renaming to '_final'
|
|
%warnfilter(SWIGWARN_PARSE_KEYWORD) override; // 'override' is a C# keyword, renaming to '_override'
|
|
|
|
%ignore Space1::final::operator=;
|
|
#if defined(SWIGPHP)
|
|
%rename(Space1_final) Space1::final::final;
|
|
#endif
|
|
#if defined(SWIGOCAML)
|
|
%rename(finale) BrokenSpace::FinalEnum1::final;
|
|
#endif
|
|
|
|
%inline %{
|
|
struct FinalBase {
|
|
virtual ~FinalBase() {}
|
|
};
|
|
|
|
struct FinalClass1 final : FinalBase {
|
|
void method1() {}
|
|
};
|
|
|
|
class FinalClass2 final : public FinalBase {
|
|
public:
|
|
void method2() {}
|
|
};
|
|
|
|
struct FinalClass3 final {
|
|
void method3() {}
|
|
};
|
|
|
|
struct FinalClass4 {
|
|
void method4() {}
|
|
} final;
|
|
|
|
struct override final {
|
|
void omethod() {}
|
|
};
|
|
%}
|
|
|
|
%rename(Space1_final) Space1::final;
|
|
|
|
%inline %{
|
|
namespace Space1 {
|
|
struct final final {
|
|
void finalmethod() {}
|
|
final() {}
|
|
final(const final &other) = default;
|
|
final& operator=(const final &other) = default;
|
|
};
|
|
struct FinalClass5 final {
|
|
void method5() {}
|
|
final final_member_var;
|
|
final get_final_member() { return final_member_var; }
|
|
Space1::final get_final_member2() { return final_member_var; }
|
|
};
|
|
struct FinalClass6 {
|
|
void method6() {}
|
|
virtual void final() final {}
|
|
virtual ~FinalClass6() = default;
|
|
};
|
|
typedef final Space1_final_typedef1;
|
|
typedef struct final Space1_final_typedef2;
|
|
}
|
|
typedef Space1::final Space1_final_typedef3;
|
|
typedef struct Space1::final Space1_final_typedef4;
|
|
%}
|
|
|
|
%inline %{
|
|
namespace Space2 {
|
|
class Y {
|
|
public:
|
|
Y(int i=0) {}
|
|
};
|
|
|
|
struct FinalVar1 {
|
|
class Y notfinal;
|
|
// class Y final; // SWIG (C++ only) fails to parse (same for struct and union)
|
|
};
|
|
struct FinalVar2 {
|
|
class Y notfinal = {};
|
|
// class Y final = {}; // SWIG (C++ only) fails to parse (same for struct and union)
|
|
};
|
|
struct FinalVar3 {
|
|
class Y notfinal = Y();
|
|
// class Y final = Y(); // SWIG (C++ only) fails to parse (same for struct and union)
|
|
};
|
|
struct FinalVar4 {
|
|
class Y* final;
|
|
FinalVar4() : final() {}
|
|
};
|
|
struct FinalVar5 {
|
|
Y final;
|
|
};
|
|
struct FinalVar6 {
|
|
Y final = {};
|
|
};
|
|
struct FinalVar7 {
|
|
Y final = Y();
|
|
};
|
|
struct FinalVar8 {
|
|
Y final{};
|
|
};
|
|
struct FinalVar9 {
|
|
Y final{9};
|
|
};
|
|
struct FinalVar10 {
|
|
void b10(Y final) {}
|
|
};
|
|
}
|
|
%}
|
|
|
|
// Unfortunately the use of final in BrokenSpace does not work with Visual C++
|
|
// so we limit testing to parsing these by SWIG and then ignoring it all.
|
|
%ignore BrokenSpace::FinalVar11;
|
|
%ignore BrokenSpace::FinalEnum1;
|
|
%ignore BrokenSpace::FinalEnum2;
|
|
|
|
namespace BrokenSpace {
|
|
using Space2::Y;
|
|
struct FinalVar11 {
|
|
void a11(class Y final) {}
|
|
};
|
|
struct FinalEnum1 {
|
|
enum Enum1 { one, two, final };
|
|
void enum_in(Enum1 e) {}
|
|
};
|
|
struct FinalEnum2 {
|
|
enum Enum2 { one, two, three, four };
|
|
enum Enum2 final;
|
|
};
|
|
}
|
|
|
|
%rename(Space3_final) Space3::final;
|
|
%inline %{
|
|
namespace Space3 {
|
|
typedef struct final {
|
|
void fmethod() {}
|
|
} final;
|
|
}
|
|
%}
|