more smart_pointer fixes + cases

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@6844 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2004-12-07 23:32:11 +00:00
commit d6760d4889
6 changed files with 87 additions and 26 deletions

View file

@ -11,9 +11,14 @@ b = CBase()
d = CDerived()
p = CPtr()
if b.bar() != p.bar():
raise RuntimeError
if d.foo() != p.foo():
raise RuntimeError
if b.hello() != p.hello():
raise RuntimeError

View file

@ -19,3 +19,12 @@ if b.x != f.x:
if b.z != f.z:
raise RuntimeError
if Foo.z == Bar.z:
raise RuntimeError

View file

@ -1,30 +1,51 @@
%module smart_pointer_extend
%inline %{
namespace hi
{
struct CBase
{
static int hello()
{
return 1;
}
};
class CBase
{
};
class CDerived : public CBase
{
};
class CDerived : public CBase
{
};
class CPtr
{
public:
CDerived* operator->(void) {return 0;};
};
class CPtr
{
public:
CDerived* operator->(void) {return 0;};
};
int get_hello(CPtr ptr)
{
return ptr->hello();
}
class CPtrConst
{
public:
CDerived* operator->(void) const {return 0;};
};
}
%}
%extend CBase {
%extend hi::CBase {
int foo(void) {return 1;};
int bar(void) {return 2;};
int boo(int i) {return i;};
}
%extend hi::CDerived {
int foo(void) {return 1;};
}
%extend CDerived {
int foo(void) {return 2;};
}
%extend Foo

View file

@ -9,6 +9,9 @@
int x[4];
int y;
static const int z;
static int boo() { return 0;}
};
class Bar {
@ -18,6 +21,17 @@
Foo *operator->() {
return f;
}
static int bua() { return 0;}
};
class CBar {
Foo *f;
public:
CBar(Foo *f) : f(f) { }
Foo *operator->() const {
return f;
}
};
int get_y(Bar *b)