diff --git a/Examples/test-suite/assign_reference.i b/Examples/test-suite/assign_reference.i index 8c27c43e9..1dbccd496 100644 --- a/Examples/test-suite/assign_reference.i +++ b/Examples/test-suite/assign_reference.i @@ -121,4 +121,10 @@ MemberPrivateVar StaticMembersMemberVars::StaticMemberPrivate; MemberPublicVar GlobalMemberPublic; MemberProtectedVar GlobalMemberProtected; MemberPrivateVar GlobalMemberPrivate; + +// Setters and getters available +struct StaticMembersMemberVarsHolder { + StaticMembersMemberVars Member; +}; +StaticMembersMemberVars GlobalStaticMembersMemberVars; %} diff --git a/Examples/test-suite/cpp11_assign_delete.i b/Examples/test-suite/cpp11_assign_delete.i index 1a2f02f5e..990def296 100644 --- a/Examples/test-suite/cpp11_assign_delete.i +++ b/Examples/test-suite/cpp11_assign_delete.i @@ -113,4 +113,10 @@ MemberPrivateVar StaticMembersMemberVars::StaticMemberPrivate; MemberPublicVar GlobalMemberPublic; MemberProtectedVar GlobalMemberProtected; MemberPrivateVar GlobalMemberPrivate; + +// Setters and getters available +struct StaticMembersMemberVarsHolder { + StaticMembersMemberVars Member; +}; +StaticMembersMemberVars GlobalStaticMembersMemberVars; %} diff --git a/Examples/test-suite/cpp11_assign_rvalue_reference.i b/Examples/test-suite/cpp11_assign_rvalue_reference.i index 15bacbf34..82614de3a 100644 --- a/Examples/test-suite/cpp11_assign_rvalue_reference.i +++ b/Examples/test-suite/cpp11_assign_rvalue_reference.i @@ -121,4 +121,10 @@ MemberPrivateVar StaticMembersMemberVars::StaticMemberPrivate; MemberPublicVar GlobalMemberPublic; MemberProtectedVar GlobalMemberProtected; MemberPrivateVar GlobalMemberPrivate; + +// Setters and getters available +struct StaticMembersMemberVarsHolder { + StaticMembersMemberVars Member; +}; +StaticMembersMemberVars GlobalStaticMembersMemberVars; %} diff --git a/Examples/test-suite/java/assign_reference_runme.java b/Examples/test-suite/java/assign_reference_runme.java index 1b8af5918..113250a74 100644 --- a/Examples/test-suite/java/assign_reference_runme.java +++ b/Examples/test-suite/java/assign_reference_runme.java @@ -77,5 +77,13 @@ public class assign_reference_runme { MemberPublicVar gmpv1 = assign_reference.getGlobalMemberPublic(); MemberProtectedVar gmpv2 = assign_reference.getGlobalMemberProtected(); MemberPrivateVar gmpv3 = assign_reference.getGlobalMemberPrivate(); + + // Setters and getters available + StaticMembersMemberVarsHolder smmvh = new StaticMembersMemberVarsHolder(); + StaticMembersMemberVars member = smmvh.getMember(); + smmvh.setMember(member); + + StaticMembersMemberVars smmv = assign_reference.getGlobalStaticMembersMemberVars(); + assign_reference.setGlobalStaticMembersMemberVars(smmv); } } diff --git a/Examples/test-suite/java/cpp11_assign_delete_runme.java b/Examples/test-suite/java/cpp11_assign_delete_runme.java index 270b36f8d..896a3cb96 100644 --- a/Examples/test-suite/java/cpp11_assign_delete_runme.java +++ b/Examples/test-suite/java/cpp11_assign_delete_runme.java @@ -73,5 +73,13 @@ public class cpp11_assign_delete_runme { MemberPublicVar gmpv1 = cpp11_assign_delete.getGlobalMemberPublic(); MemberProtectedVar gmpv2 = cpp11_assign_delete.getGlobalMemberProtected(); MemberPrivateVar gmpv3 = cpp11_assign_delete.getGlobalMemberPrivate(); + + // Setters and getters available + StaticMembersMemberVarsHolder smmvh = new StaticMembersMemberVarsHolder(); + StaticMembersMemberVars member = smmvh.getMember(); + smmvh.setMember(member); + + StaticMembersMemberVars smmv = cpp11_assign_delete.getGlobalStaticMembersMemberVars(); + cpp11_assign_delete.setGlobalStaticMembersMemberVars(smmv); } } diff --git a/Examples/test-suite/java/cpp11_assign_rvalue_reference_runme.java b/Examples/test-suite/java/cpp11_assign_rvalue_reference_runme.java index 9f7651417..87c06222e 100644 --- a/Examples/test-suite/java/cpp11_assign_rvalue_reference_runme.java +++ b/Examples/test-suite/java/cpp11_assign_rvalue_reference_runme.java @@ -77,5 +77,13 @@ public class cpp11_assign_rvalue_reference_runme { MemberPublicVar gmpv1 = cpp11_assign_rvalue_reference.getGlobalMemberPublic(); MemberProtectedVar gmpv2 = cpp11_assign_rvalue_reference.getGlobalMemberProtected(); MemberPrivateVar gmpv3 = cpp11_assign_rvalue_reference.getGlobalMemberPrivate(); + + // Setters and getters available + StaticMembersMemberVarsHolder smmvh = new StaticMembersMemberVarsHolder(); + StaticMembersMemberVars member = smmvh.getMember(); + smmvh.setMember(member); + + StaticMembersMemberVars smmv = cpp11_assign_rvalue_reference.getGlobalStaticMembersMemberVars(); + cpp11_assign_rvalue_reference.setGlobalStaticMembersMemberVars(smmv); } } diff --git a/Source/Modules/allocate.cxx b/Source/Modules/allocate.cxx index 8809306b0..4600a8b0f 100644 --- a/Source/Modules/allocate.cxx +++ b/Source/Modules/allocate.cxx @@ -667,7 +667,7 @@ class Allocate:public Dispatcher { } } - bool is_assignable(Node *n, bool& is_reference) { + bool is_assignable(Node *n, bool &is_reference) { bool assignable = true; SwigType *ty = Copy(Getattr(n, "type")); SwigType_push(ty, Getattr(n, "decl")); @@ -1150,7 +1150,8 @@ Allocate(): /* Check to see if this is a static member or not. If so, we add an attribute cplus:staticbase that saves the current class */ - if (Swig_storage_isstatic(n)) { + int is_static = Swig_storage_isstatic(n); + if (is_static) { Setattr(n, "cplus:staticbase", inclass); } @@ -1161,8 +1162,10 @@ Allocate(): if (!assignable) { SetFlag(n, "feature:immutable"); } - if (!assignable || is_reference) - SetFlag(inclass, "allocate:has_nonassignable"); // The class has a variable that cannot be assigned to + if (!is_static) { + if (!assignable || is_reference) + SetFlag(inclass, "allocate:has_nonassignable"); // The class has a variable that cannot be assigned to + } } String *name = Getattr(n, "name");