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,6 +99,7 @@ public:
%inline %{ %inline %{
namespace foo {
class DFoo; class DFoo;
@ -118,11 +119,12 @@ public:
public: public:
void F(void) {}; 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);