blob: dd2b180e7b33618a5227fb69a34a787ec5d82d99 [file] [log] [blame]
%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;
%}