avoid using reference value for static members, since it can generate unresolved symbols for static const

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6916 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2004-12-23 07:38:55 +00:00
commit 63ecf6ec37
3 changed files with 20 additions and 4 deletions

View file

@ -52,6 +52,5 @@
%{ %{
const int Foo::z = 3; const int Foo::z = 3;
const int Foo::zz;
int Foo::zx; int Foo::zx;
%} %}

View file

@ -1207,13 +1207,25 @@ Language::membervariableHandler(Node *n) {
int assignable = is_assignable(n); int assignable = is_assignable(n);
if (SmartPointer) {
if (!Getattr(n,"classname")) {
Setattr(n,"classname",Getattr(CurrentClass,"allocate:smartpointerbase"));
}
}
if (assignable) { if (assignable) {
int make_wrapper = 1; int make_wrapper = 1;
String *tm = 0; String *tm = 0;
String *target = 0; String *target = 0;
if (!Extend) { if (!Extend) {
if (SmartPointer) { if (SmartPointer) {
if (checkAttribute(n, "storage", "static")) {
String *base = Getattr(n,"classname");
target = NewStringf("%s::%s", base,name);
} else {
target = NewStringf("(*%s)->%s",Swig_cparm_name(0,0),name); target = NewStringf("(*%s)->%s",Swig_cparm_name(0,0),name);
}
} else { } else {
target = NewStringf("%s->%s", Swig_cparm_name(0,0),name); target = NewStringf("%s->%s", Swig_cparm_name(0,0),name);
} }

View file

@ -1147,8 +1147,13 @@ Swig_MembergetToFunction(Node *n, String *classname, int flags) {
varref = flags & CWRAP_VAR_REFERENCE; varref = flags & CWRAP_VAR_REFERENCE;
if (flags & CWRAP_SMART_POINTER) { if (flags & CWRAP_SMART_POINTER) {
if (checkAttribute(n, "storage", "static")) {
String *base = Getattr(n,"classname");
self = NewStringf("%s::", base);
} else {
self = NewString("(*this)->"); self = NewString("(*this)->");
} }
}
name = Getattr(n,"name"); name = Getattr(n,"name");
type = Getattr(n,"type"); type = Getattr(n,"type");