PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/test-suite/multiple_inheritance.i

#
Swig | 94 lines | 74 code | 18 blank | 2 comment | 0 complexity | 4142d62e6da7c3653840f6aa4df2fb22 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. /* This was broken in the perl module. See bug 962115
  2. It tests basic multiple inheritance */
  3. %module(ruby_minherit="1") multiple_inheritance
  4. %warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
  5. SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
  6. SWIGWARN_D_MULTIPLE_INHERITANCE,
  7. SWIGWARN_PHP_MULTIPLE_INHERITANCE) FooBar; /* C#, D, Java, PHP multiple inheritance */
  8. %warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
  9. SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
  10. SWIGWARN_D_MULTIPLE_INHERITANCE,
  11. SWIGWARN_PHP_MULTIPLE_INHERITANCE) FooBarSpam; /* C#, D, Java, PHP multiple inheritance */
  12. %inline %{
  13. class Bar {
  14. public:
  15. virtual ~Bar()
  16. {
  17. }
  18. virtual int bar() { return 1; }
  19. };
  20. class Foo {
  21. public:
  22. virtual ~Foo()
  23. {
  24. }
  25. virtual int foo() { return 2; }
  26. };
  27. template<class T> class Spam {
  28. public:
  29. virtual ~Spam()
  30. {
  31. }
  32. virtual int spam(const T& t) { return 100; }
  33. };
  34. %}
  35. %template(SpamInt) Spam<int>;
  36. %inline %{
  37. class FooBar : public Foo, public Bar {
  38. public:
  39. virtual int fooBar() { return 3; }
  40. };
  41. class FooBarSpam : public Foo, public Bar, public Spam<int> {
  42. public:
  43. virtual int fooBarSpam() { return 4; }
  44. };
  45. %}
  46. // Languages that don't support multiple inheritance should inherit from one of the non-ignored classes
  47. %ignore IgnoreMe;
  48. %ignore IgnoreMeToo;
  49. %inline %{
  50. class IgnoreMe {
  51. public:
  52. virtual int ignoreme() { return 5; }
  53. virtual ~IgnoreMe() {}
  54. };
  55. class IgnoreMeToo {
  56. public:
  57. virtual int ignoremetoo() { return 6; }
  58. virtual ~IgnoreMeToo() {}
  59. };
  60. class IgnoreDerived1 : public IgnoreMe, public Bar {
  61. public:
  62. virtual int ignorederived1() { return 7; }
  63. };
  64. class IgnoreDerived2 : public IgnoreMe, public IgnoreMeToo, public Bar {
  65. public:
  66. virtual int ignorederived2() { return 8; }
  67. };
  68. class IgnoreDerived3 : public IgnoreMe, public Bar, public IgnoreMeToo {
  69. public:
  70. virtual int ignorederived3() { return 9; }
  71. };
  72. class IgnoreDerived4 : public Bar, public IgnoreMe, public IgnoreMeToo {
  73. public:
  74. virtual int ignorederived4() { return 10; }
  75. };
  76. %}