From dfa9bdb5155f00c8130642108357d796e09808d9 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Tue, 4 Jan 2005 20:42:28 +0000 Subject: [PATCH] more smart pointers + extend fixes git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6919 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Examples/test-suite/smart_pointer_extend.i | 42 +++++++++++----------- Source/Modules/lang.cxx | 7 ++-- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/Examples/test-suite/smart_pointer_extend.i b/Examples/test-suite/smart_pointer_extend.i index 6127cb608..3e9a37d79 100644 --- a/Examples/test-suite/smart_pointer_extend.i +++ b/Examples/test-suite/smart_pointer_extend.i @@ -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;}; } diff --git a/Source/Modules/lang.cxx b/Source/Modules/lang.cxx index 3e4873c36..da41c788d 100644 --- a/Source/Modules/lang.cxx +++ b/Source/Modules/lang.cxx @@ -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);