mirror of https://github.com/swig/swig
173 lines
5.5 KiB
OpenEdge ABL
173 lines
5.5 KiB
OpenEdge ABL
%module cpp11_assign_delete
|
|
|
|
%rename(Assign) *::operator=;
|
|
|
|
// (1) Test directly non-assignable member variables
|
|
%inline %{
|
|
struct AssignPublic {
|
|
AssignPublic& operator=(const AssignPublic &) = delete;
|
|
};
|
|
|
|
struct AssignProtected {
|
|
protected:
|
|
AssignProtected& operator=(const AssignProtected &) = delete;
|
|
};
|
|
|
|
struct AssignPrivate {
|
|
private:
|
|
AssignPrivate& operator=(const AssignPrivate &) = delete;
|
|
};
|
|
|
|
struct MemberVars {
|
|
// These will only have getters
|
|
AssignPublic MemberPublic;
|
|
AssignProtected MemberProtected;
|
|
AssignPrivate MemberPrivate;
|
|
};
|
|
|
|
struct MemberArrayVars {
|
|
// These will only have getters
|
|
AssignPublic ArrayMemberPublic[1];
|
|
AssignProtected ArrayMemberProtected[1];
|
|
AssignPrivate ArrayMemberPrivate[1];
|
|
};
|
|
|
|
// (2) Test indirectly non-assignable member variables via inheritance
|
|
struct AssignPublicDerived : AssignPublic {};
|
|
struct AssignProtectedDerived : AssignProtected {};
|
|
struct AssignPrivateDerived : AssignPrivate {};
|
|
struct AssignPublicDerivedSettable : AssignPublic {
|
|
AssignPublicDerivedSettable& operator=(const AssignPublicDerivedSettable &) { return *this; }
|
|
};
|
|
struct AssignProtectedDerivedSettable : AssignProtected {
|
|
AssignProtectedDerivedSettable& operator=(const AssignProtectedDerivedSettable &) { return *this; }
|
|
};
|
|
struct AssignPrivateDerivedSettable : AssignPrivate {
|
|
AssignPrivateDerivedSettable& operator=(const AssignPrivateDerivedSettable &) { return *this; }
|
|
};
|
|
|
|
struct InheritedMemberVars {
|
|
// These will only have getters
|
|
AssignPublicDerived MemberPublicDerived;
|
|
AssignProtectedDerived MemberProtectedDerived;
|
|
AssignPrivateDerived MemberPrivateDerived;
|
|
|
|
static AssignPublicDerived StaticMemberPublicDerived;
|
|
static AssignProtectedDerived StaticMemberProtectedDerived;
|
|
static AssignPrivateDerived StaticMemberPrivateDerived;
|
|
|
|
// These will have getters and setters
|
|
AssignPublicDerivedSettable MemberPublicDerivedSettable;
|
|
AssignProtectedDerivedSettable MemberProtectedDerivedSettable;
|
|
AssignPrivateDerivedSettable MemberPrivateDerivedSettable;
|
|
|
|
static AssignPublicDerivedSettable StaticMemberPublicDerivedSettable;
|
|
static AssignProtectedDerivedSettable StaticMemberProtectedDerivedSettable;
|
|
static AssignPrivateDerivedSettable StaticMemberPrivateDerivedSettable;
|
|
};
|
|
|
|
AssignPublicDerived InheritedMemberVars::StaticMemberPublicDerived;
|
|
AssignProtectedDerived InheritedMemberVars::StaticMemberProtectedDerived;
|
|
AssignPrivateDerived InheritedMemberVars::StaticMemberPrivateDerived;
|
|
|
|
AssignPublicDerivedSettable InheritedMemberVars::StaticMemberPublicDerivedSettable;
|
|
AssignProtectedDerivedSettable InheritedMemberVars::StaticMemberProtectedDerivedSettable;
|
|
AssignPrivateDerivedSettable InheritedMemberVars::StaticMemberPrivateDerivedSettable;
|
|
|
|
// These will only have getters
|
|
AssignPublicDerived GlobalPublicDerived;
|
|
AssignProtectedDerived GlobalProtectedDerived;
|
|
AssignPrivateDerived GlobalPrivateDerived;
|
|
|
|
// These will have getters and setters
|
|
AssignPublicDerivedSettable GlobalPublicDerivedSettable;
|
|
AssignProtectedDerivedSettable GlobalProtectedDerivedSettable;
|
|
AssignPrivateDerivedSettable GlobalPrivateDerivedSettable;
|
|
%}
|
|
|
|
// (3) Test indirectly non-assignable member variables via classes that themselves have non-assignable member variables
|
|
%inline %{
|
|
struct MemberPublicVar {
|
|
AssignPublic MemberPublic;
|
|
};
|
|
|
|
struct MemberProtectedVar {
|
|
protected:
|
|
AssignProtected MemberProtected;
|
|
};
|
|
|
|
struct MemberPrivateVar {
|
|
private:
|
|
AssignPrivate MemberPrivate;
|
|
};
|
|
|
|
struct MembersMemberVars {
|
|
// These will only have getters
|
|
MemberPublicVar MemberPublic;
|
|
MemberProtectedVar MemberProtected;
|
|
MemberPrivateVar MemberPrivate;
|
|
};
|
|
|
|
struct StaticMembersMemberVars {
|
|
static MemberPublicVar StaticMemberPublic;
|
|
static MemberProtectedVar StaticMemberProtected;
|
|
static MemberPrivateVar StaticMemberPrivate;
|
|
};
|
|
MemberPublicVar StaticMembersMemberVars::StaticMemberPublic;
|
|
MemberProtectedVar StaticMembersMemberVars::StaticMemberProtected;
|
|
MemberPrivateVar StaticMembersMemberVars::StaticMemberPrivate;
|
|
|
|
MemberPublicVar GlobalMemberPublic;
|
|
MemberProtectedVar GlobalMemberProtected;
|
|
MemberPrivateVar GlobalMemberPrivate;
|
|
|
|
// Setters and getters available
|
|
struct StaticMembersMemberVarsHolder {
|
|
StaticMembersMemberVars Member;
|
|
};
|
|
StaticMembersMemberVars GlobalStaticMembersMemberVars;
|
|
%}
|
|
|
|
// (4) Test indirectly non-assignable member variables via classes that themselves have non-assignable array member variables
|
|
%inline %{
|
|
struct MemberPublicArrayVar {
|
|
AssignPublic MemberPublic[1];
|
|
};
|
|
|
|
struct MemberProtectedArrayVar {
|
|
protected:
|
|
AssignProtected MemberProtected[1];
|
|
};
|
|
|
|
struct MemberPrivateArrayVar {
|
|
private:
|
|
AssignPrivate MemberPrivate[1];
|
|
};
|
|
|
|
struct MembersMemberArrayVars {
|
|
// These will only have getters
|
|
MemberPublicArrayVar MemberPublic;
|
|
MemberProtectedArrayVar MemberProtected;
|
|
MemberPrivateArrayVar MemberPrivate;
|
|
};
|
|
|
|
struct StaticMembersMemberArrayVars {
|
|
static MemberPublicArrayVar StaticMemberPublic;
|
|
static MemberProtectedArrayVar StaticMemberProtected;
|
|
static MemberPrivateArrayVar StaticMemberPrivate;
|
|
};
|
|
MemberPublicArrayVar StaticMembersMemberArrayVars::StaticMemberPublic;
|
|
MemberProtectedArrayVar StaticMembersMemberArrayVars::StaticMemberProtected;
|
|
MemberPrivateArrayVar StaticMembersMemberArrayVars::StaticMemberPrivate;
|
|
|
|
MemberPublicArrayVar GlobalArrayMemberPublic;
|
|
MemberProtectedArrayVar GlobalArrayMemberProtected;
|
|
MemberPrivateArrayVar GlobalArrayMemberPrivate;
|
|
|
|
// Setters and getters available
|
|
struct StaticMembersMemberArrayVarsHolder {
|
|
StaticMembersMemberArrayVars Member;
|
|
};
|
|
StaticMembersMemberArrayVars GlobalStaticMembersMemberArrayVars;
|
|
%}
|