add virtual destructors where needed

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5873 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2004-04-11 12:10:44 +00:00
commit f6340798c4
22 changed files with 55 additions and 4 deletions

View file

@ -2,6 +2,11 @@
%inline %{
class A {
public:
virtual ~A()
{
}
private:
virtual int x() = 0;
protected:

View file

@ -7,7 +7,11 @@
class Foo {
public:
virtual int blah() = 0;
virtual ~Foo()
{
}
virtual int blah() = 0;
};
class Bar : public Foo { };

View file

@ -7,6 +7,7 @@
class Foo {
public:
virtual ~Foo() { }
virtual int blah() = 0;
};

View file

@ -8,6 +8,10 @@
struct AbstractBaseClass
{
virtual ~AbstractBaseClass()
{
}
virtual bool write(Engine& archive) const = 0;
};

View file

@ -19,6 +19,8 @@
template <FieldDim Dim>
struct Base
{
virtual ~Base() {}
typedef unsigned int size_type;
typedef Facet<Dim>* facet_ptr;

View file

@ -6,6 +6,10 @@
%inline %{
struct A
{
virtual ~A()
{
}
virtual int foo() = 0;
};

View file

@ -5,6 +5,7 @@
%inline %{
class Foo {
public:
virtual ~Foo() { }
virtual char *blah() = 0;
};

View file

@ -75,6 +75,8 @@ int test_prepost(int x, int y) {
%inline %{
class Foo {
public:
virtual ~Foo() { }
virtual int test_preassert(int x, int y) {
if ((x > 0) && (y > 0)) return 1;
return 0;
@ -140,6 +142,7 @@ public:
%inline %{
class A {
public:
virtual ~A() {}
virtual int foo(int a, int b, int c, int d, int e) {
if ((a > 0) && (b > 0) && (c > 0) && (d > 0) && (e > 0)) {
return 1;
@ -150,6 +153,7 @@ public:
class B {
public:
virtual ~B() {}
virtual int bar(int a, int b, int c, int d, int e) {
if ((a > 0) && (b > 0) && (c > 0) && (d > 0) && (e > 0)) {
return 1;

View file

@ -46,6 +46,7 @@ namespace Foo {
typedef int Integer;
class Test2 {
public:
virtual ~Test2() { }
virtual char *method() {
return (char *) "Test2::method";
}

View file

@ -9,9 +9,11 @@
class Foo {
public:
virtual Foo *blah() {
return this;
}
virtual ~Foo() { }
virtual Foo *blah() {
return this;
}
};
%}

View file

@ -23,4 +23,5 @@ bar2(enum foo2 x) {}
void
bar3(foo3 x) {}
%}

View file

@ -7,6 +7,7 @@
/* Define the class internally, but don't tell SWIG about it */
class Foo {
public:
virtual ~Foo() {}
virtual char *blah() {
return (char *) "Foo::blah";
}
@ -21,6 +22,7 @@ class Foo;
class Bar : public Foo {
public:
virtual ~Bar() {}
virtual char *blah() {
return (char *) "Bar::blah";
};

View file

@ -4,6 +4,8 @@
class A {
public:
virtual ~A() { }
virtual void f(void) = 0;
};

View file

@ -15,6 +15,7 @@ private:
int x;
public:
Foo() { x = 1; }
virtual ~Foo() {}
virtual int xget() { return x; };
};
typedef Foo *FooPtr;
@ -26,6 +27,7 @@ private:
int y;
public:
Bar() { y = 2; }
virtual ~Bar() {}
virtual int yget() { return y; }
};

View file

@ -347,6 +347,11 @@ macro(size_t, pfx, sizet)
: var_pchar(0), var_pcharc(0), var_pint(0)
{
}
virtual ~Test()
{
}
%test_prim_types_stc(stc_decl, stc);
%test_prim_types(var_decl, var);
var_decl(namet, var, namet);

View file

@ -49,6 +49,7 @@ class D : public C {
/* Another abstract class */
class AA {
public:
virtual ~AA() { }
virtual void method2() = 0;
};

View file

@ -6,6 +6,7 @@
{
struct A
{
virtual ~A() { }
virtual int value(A*) = 0;
int index;
};

View file

@ -9,6 +9,7 @@ class MyHandle_Foo2 {
class Foo2 {
public:
virtual ~Foo2() {}
virtual int sum(int i, int j) { return i+j; }
static int sum(int i, int j, int k);
};

View file

@ -7,6 +7,7 @@
template<class T> class Foo {
public:
virtual ~Foo() { }
virtual char *blah() {
return (char *) "Foo";
}

View file

@ -11,6 +11,8 @@
class A
{
public:
virtual ~A() { }
virtual void say_hi() = 0; // only fails with pure virtual methods
virtual void say_hello(); // this works fine

View file

@ -1,9 +1,12 @@
// Inheritance through a typedef name
%module typedef_inherit
%inline %{
class Foo {
public:
virtual ~Foo () { }
virtual char *blah() {
return (char *) "Foo::blah";
}
@ -29,6 +32,7 @@ typedef struct {
} Spam;
struct Grok : public Spam {
virtual ~Grok() { }
virtual char *blah() {
return (char *) "Grok::blah";
}

View file

@ -4,6 +4,7 @@
class Foo {
public:
int x;
virtual ~Foo() { }
virtual Foo* blah() { return this; }
};