aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/director_multiple_inheritance.i
diff options
context:
space:
mode:
authorAlistair Delva <adelva@google.com>2024-04-10 14:15:29 -0700
committerAlistair Delva <adelva@google.com>2024-04-11 12:58:28 -0700
commitd0f0f90be16c2ac553b5fa08512045273135147a (patch)
tree5d9ebb7a04807ea8a609ddd18b0162bc87530e4b /Examples/test-suite/director_multiple_inheritance.i
parent6ffc1dbf29ba98c4d8aa71ebc9b484e973fe1030 (diff)
downloadswig-d0f0f90be16c2ac553b5fa08512045273135147a.tar.gz
Change-Id: I47cef2be94299220d80265d949a95b58eee2c23b
Diffstat (limited to 'Examples/test-suite/director_multiple_inheritance.i')
-rw-r--r--Examples/test-suite/director_multiple_inheritance.i71
1 files changed, 71 insertions, 0 deletions
diff --git a/Examples/test-suite/director_multiple_inheritance.i b/Examples/test-suite/director_multiple_inheritance.i
new file mode 100644
index 000000000..ff50cfeba
--- /dev/null
+++ b/Examples/test-suite/director_multiple_inheritance.i
@@ -0,0 +1,71 @@
+//%module(ruby_minherit="1") multiple_inheritance
+%module(directors="1") director_multiple_inheritance
+
+%feature("director") A;
+%feature("director") B;
+%feature("director") C;
+%feature("director") D;
+
+%inline %{
+
+class A {
+public:
+ virtual ~A() { }
+ virtual int testA();
+};
+
+class B: virtual public A {
+public:
+ virtual ~B() { }
+ virtual int testB();
+};
+
+class C: virtual public A {
+public:
+ virtual ~C() { }
+ virtual int testC();
+};
+
+class D: virtual public A {
+public:
+ virtual ~D() { }
+ virtual int testD();
+};
+
+class E {
+public:
+ virtual ~E() { }
+ virtual int testE(B*);
+};
+
+class F {
+public:
+ virtual ~F() { }
+ virtual int testF(C*);
+};
+
+class T {
+public:
+ virtual ~T() { }
+ virtual int testT(D*);
+};
+
+%}
+
+%{
+
+int A::testA() { return 1; }
+
+int B::testB() { return 2; }
+
+int C::testC() { return 3; }
+
+int D::testD() { return 4; }
+
+int E::testE(B*) { return 5; }
+
+int F::testF(C*) { return 6; }
+
+int T::testT(D*) { return 20; }
+
+%}