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

# · Swig · 52 lines · 45 code · 7 blank · 0 comment · 0 complexity · 59aeac61756f2105305091aff6f7c7f0 MD5 · raw file

  1. %module(ruby_minherit="1") using_composition
  2. %warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
  3. SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
  4. SWIGWARN_D_MULTIPLE_INHERITANCE,
  5. SWIGWARN_PHP_MULTIPLE_INHERITANCE) FooBar; // C#, D, Java, PHP multiple inheritance
  6. %warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
  7. SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
  8. SWIGWARN_D_MULTIPLE_INHERITANCE,
  9. SWIGWARN_PHP_MULTIPLE_INHERITANCE) FooBar2; // C#, D, Java, PHP multiple inheritance
  10. %warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
  11. SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
  12. SWIGWARN_D_MULTIPLE_INHERITANCE,
  13. SWIGWARN_PHP_MULTIPLE_INHERITANCE) FooBar3; // C#, D, Java, PHP multiple inheritance
  14. #ifdef SWIGLUA // lua only has one numeric type, so some overloads shadow each other creating warnings
  15. %warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) blah;
  16. #endif
  17. %inline %{
  18. class Foo {
  19. public:
  20. int blah(int x) { return x; }
  21. char *blah(char *x) { return x; }
  22. };
  23. class Bar {
  24. public:
  25. double blah(double x) { return x; }
  26. };
  27. class FooBar : public Foo, public Bar {
  28. public:
  29. using Foo::blah;
  30. using Bar::blah;
  31. char *blah(char *x) { return x; }
  32. };
  33. class FooBar2 : public Foo, public Bar {
  34. public:
  35. char *blah(char *x) { return x; }
  36. using Foo::blah;
  37. using Bar::blah;
  38. };
  39. class FooBar3 : public Foo, public Bar {
  40. public:
  41. using Foo::blah;
  42. char *blah(char *x) { return x; }
  43. using Bar::blah;
  44. };
  45. %}