more smart pointers + extend fixes

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6919 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-01-04 20:42:28 +00:00
commit dfa9bdb515
2 changed files with 27 additions and 22 deletions

View file

@ -99,30 +99,32 @@ public:
%inline %{
class DFoo;
class DPtrFoo
{
DFoo *p;
public:
DPtrFoo(DFoo *ptr) : p(ptr)
{
}
namespace foo {
DFoo* operator->(void) {return p;};
};
class DFoo
{
public:
void F(void) {};
};
class DFoo;
class DPtrFoo
{
DFoo *p;
public:
DPtrFoo(DFoo *ptr) : p(ptr)
{
}
DFoo* operator->(void) {return p;};
};
class DFoo
{
public:
void F(void) {};
};
}
%}
%extend DFoo {
%extend foo::DFoo {
static int SExt(int i = 1) {return i;};
int Ext(int i = 2) {return i;};
}

View file

@ -1083,14 +1083,17 @@ Language::staticmemberfunctionHandler(Node *n) {
String *cname, *mrename;
if (!Extend) {
String *sname = Getattr(Getattr(n,"cplus:staticbase"),"name");
Node *sb = Getattr(n,"cplus:staticbase");
String *sname = sb ? Getattr(sb,"name") : 0;
if (sname) {
cname = NewStringf("%s::%s",sname,name);
} else {
cname = NewStringf("%s::%s",ClassName,name);
}
} else {
cname = Copy(Swig_name_member(ClassPrefix,name));
String *mname = Swig_name_mangle(ClassName);
cname = Swig_name_member(mname,name);
Delete(mname);
}
mrename = Swig_name_member(ClassPrefix, symname);