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 %{ %inline %{
namespace foo {
class DFoo; class DFoo;
class DPtrFoo class DPtrFoo
{
DFoo *p;
public:
DPtrFoo(DFoo *ptr) : p(ptr)
{ {
} DFoo *p;
public:
DPtrFoo(DFoo *ptr) : p(ptr)
{
}
DFoo* operator->(void) {return p;}; DFoo* operator->(void) {return p;};
}; };
class DFoo
{
public:
void F(void) {};
};
class DFoo
{
public:
void F(void) {};
};
}
%} %}
%extend DFoo {
%extend foo::DFoo {
static int SExt(int i = 1) {return i;}; static int SExt(int i = 1) {return i;};
int Ext(int i = 2) {return i;}; int Ext(int i = 2) {return i;};
} }

View file

@ -1083,14 +1083,17 @@ Language::staticmemberfunctionHandler(Node *n) {
String *cname, *mrename; String *cname, *mrename;
if (!Extend) { 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) { if (sname) {
cname = NewStringf("%s::%s",sname,name); cname = NewStringf("%s::%s",sname,name);
} else { } else {
cname = NewStringf("%s::%s",ClassName,name); cname = NewStringf("%s::%s",ClassName,name);
} }
} else { } 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); mrename = Swig_name_member(ClassPrefix, symname);