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()
{
return 1;
}
}
int x;
static const int z = 1;
};
class CDerived : public CBase
@ -29,7 +31,7 @@
class CPtrConst
{
public:
CDerived* operator->(void) const {return 0;};
const CDerived* operator->() const {return 0;};
};
}

View file

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

View file

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

View file

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