summaryrefslogtreecommitdiff
path: root/Examples/test-suite/pure_virtual.i
diff options
context:
space:
mode:
authorDave Beazley <dave-swig@dabeaz.com>2002-11-30 22:01:28 +0000
committerDave Beazley <dave-swig@dabeaz.com>2002-11-30 22:01:28 +0000
commit12a43edc2df8853e8e0315f742e57be88f0c4269 (patch)
treee3237f5f8c0a67c9bfa9bb5d6d095a739a49e4b2 /Examples/test-suite/pure_virtual.i
parent5fcae5eb66d377e1c3f81da7465c44a62295a72b (diff)
downloadswig-12a43edc2df8853e8e0315f742e57be88f0c4269.tar.gz
The great merge
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4141 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Examples/test-suite/pure_virtual.i')
-rw-r--r--Examples/test-suite/pure_virtual.i74
1 files changed, 74 insertions, 0 deletions
diff --git a/Examples/test-suite/pure_virtual.i b/Examples/test-suite/pure_virtual.i
new file mode 100644
index 000000000..1dd148041
--- /dev/null
+++ b/Examples/test-suite/pure_virtual.i
@@ -0,0 +1,74 @@
+/* SF Bug #445219, submitted by Krzysztof Kozminski
+ <kozminski@users.sf.net>.
+
+ Swig 1.3.6 gets confused by pure virtual destructors,
+ as in this file:
+*/
+
+%module pure_virtual
+
+%warnfilter(802) E; /* Ruby, multiple inheritance */
+
+%nodefault C;
+%nodefault E;
+
+%inline %{
+
+class A {
+ public:
+ A() { };
+ virtual ~A() = 0;
+ virtual void something() = 0;
+ virtual void method() = 0;
+};
+
+class B : public A {
+public:
+ B() {};
+ virtual ~B() { };
+ virtual void something() { };
+ virtual void method() { };
+};
+
+/* class C is abstract because it doesn't define all methods in A */
+class C : public A {
+ public:
+ virtual ~C() { };
+ virtual void method() { };
+}
+;
+
+/* class D is not abstract, it defines everything */
+class D : public C {
+ public:
+ virtual ~D() { };
+ virtual void something() { };
+}
+;
+
+/* Another abstract class */
+class AA {
+ public:
+ virtual void method2() = 0;
+};
+
+/* Multiple inheritance between two abstract classes */
+#ifndef SWIGJAVA
+class E : public C, public AA {
+public:
+ virtual void something() { };
+};
+
+/* Fill in method from AA. This class should be constructable */
+class F : public E {
+ public:
+ virtual void method2() { }
+};
+#endif
+
+%}
+
+%{
+A::~A() {}
+%}
+