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:
parent
b8f2bb553a
commit
f6340798c4
22 changed files with 55 additions and 4 deletions
|
|
@ -2,6 +2,11 @@
|
|||
|
||||
%inline %{
|
||||
class A {
|
||||
public:
|
||||
virtual ~A()
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
virtual int x() = 0;
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,11 @@
|
|||
|
||||
class Foo {
|
||||
public:
|
||||
virtual int blah() = 0;
|
||||
virtual ~Foo()
|
||||
{
|
||||
}
|
||||
|
||||
virtual int blah() = 0;
|
||||
};
|
||||
|
||||
class Bar : public Foo { };
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
class Foo {
|
||||
public:
|
||||
virtual ~Foo() { }
|
||||
virtual int blah() = 0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@
|
|||
|
||||
struct AbstractBaseClass
|
||||
{
|
||||
virtual ~AbstractBaseClass()
|
||||
{
|
||||
}
|
||||
|
||||
virtual bool write(Engine& archive) const = 0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@
|
|||
template <FieldDim Dim>
|
||||
struct Base
|
||||
{
|
||||
virtual ~Base() {}
|
||||
|
||||
typedef unsigned int size_type;
|
||||
typedef Facet<Dim>* facet_ptr;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@
|
|||
%inline %{
|
||||
struct A
|
||||
{
|
||||
virtual ~A()
|
||||
{
|
||||
}
|
||||
|
||||
virtual int foo() = 0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
%inline %{
|
||||
class Foo {
|
||||
public:
|
||||
virtual ~Foo() { }
|
||||
virtual char *blah() = 0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ namespace Foo {
|
|||
typedef int Integer;
|
||||
class Test2 {
|
||||
public:
|
||||
virtual ~Test2() { }
|
||||
virtual char *method() {
|
||||
return (char *) "Test2::method";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,9 +9,11 @@
|
|||
|
||||
class Foo {
|
||||
public:
|
||||
virtual Foo *blah() {
|
||||
return this;
|
||||
}
|
||||
virtual ~Foo() { }
|
||||
|
||||
virtual Foo *blah() {
|
||||
return this;
|
||||
}
|
||||
};
|
||||
%}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,4 +23,5 @@ bar2(enum foo2 x) {}
|
|||
void
|
||||
bar3(foo3 x) {}
|
||||
|
||||
|
||||
%}
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
class A {
|
||||
public:
|
||||
virtual ~A() { }
|
||||
|
||||
virtual void f(void) = 0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ class D : public C {
|
|||
/* Another abstract class */
|
||||
class AA {
|
||||
public:
|
||||
virtual ~AA() { }
|
||||
virtual void method2() = 0;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
{
|
||||
struct A
|
||||
{
|
||||
virtual ~A() { }
|
||||
virtual int value(A*) = 0;
|
||||
int index;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
template<class T> class Foo {
|
||||
public:
|
||||
virtual ~Foo() { }
|
||||
virtual char *blah() {
|
||||
return (char *) "Foo";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
class Foo {
|
||||
public:
|
||||
int x;
|
||||
virtual ~Foo() { }
|
||||
virtual Foo* blah() { return this; }
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue