more fixes and cases for smart pointers

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6917 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2004-12-23 08:56:27 +00:00
commit aba193e439
5 changed files with 12 additions and 10 deletions

View file

@ -8,7 +8,9 @@
static int hello() static int hello()
{ {
return 1; return 1;
} }
int x;
static const int z = 1;
}; };
class CDerived : public CBase class CDerived : public CBase
@ -29,7 +31,7 @@
class CPtrConst class CPtrConst
{ {
public: public:
CDerived* operator->(void) const {return 0;}; const CDerived* operator->() const {return 0;};
}; };
} }

View file

@ -32,7 +32,7 @@
Foo *f; Foo *f;
public: public:
CBar(Foo *f) : f(f) { } CBar(Foo *f) : f(f) { }
Foo *operator->() const { const Foo *operator->() {
return f; return f;
} }
}; };

View file

@ -316,7 +316,6 @@ class Allocate : public Dispatcher {
Append(methods,cp); Append(methods,cp);
} }
} else { } else {
Setattr(cp,"feature:immutable","1");
Append(methods,cp); Append(methods,cp);
} }
} else { } else {

View file

@ -1208,12 +1208,11 @@ Language::membervariableHandler(Node *n) {
int assignable = is_assignable(n); int assignable = is_assignable(n);
if (SmartPointer) { if (SmartPointer) {
if (!Getattr(n,"classname")) { if (Getattr(CurrentClass,"allocate:smartpointerconst")) {
Setattr(n,"classname",Getattr(CurrentClass,"allocate:smartpointerbase")); assignable = 0;
} }
} }
if (assignable) { if (assignable) {
int make_wrapper = 1; int make_wrapper = 1;
String *tm = 0; String *tm = 0;
@ -1221,7 +1220,8 @@ Language::membervariableHandler(Node *n) {
if (!Extend) { if (!Extend) {
if (SmartPointer) { if (SmartPointer) {
if (checkAttribute(n, "storage", "static")) { if (checkAttribute(n, "storage", "static")) {
String *base = Getattr(n,"classname"); Node *sn = Getattr(n,"cplus:staticbase");
String *base = Getattr(sn,"name");
target = NewStringf("%s::%s", base,name); target = NewStringf("%s::%s", base,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

@ -1148,7 +1148,8 @@ Swig_MembergetToFunction(Node *n, String *classname, int flags) {
if (flags & CWRAP_SMART_POINTER) { if (flags & CWRAP_SMART_POINTER) {
if (checkAttribute(n, "storage", "static")) { if (checkAttribute(n, "storage", "static")) {
String *base = Getattr(n,"classname"); Node *sn = Getattr(n,"cplus:staticbase");
String *base = Getattr(sn,"name");
self = NewStringf("%s::", base); self = NewStringf("%s::", base);
} else { } else {
self = NewString("(*this)->"); self = NewString("(*this)->");