PageRenderTime 49ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

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

#
Swig | 117 lines | 98 code | 19 blank | 0 comment | 0 complexity | 88eb1cd3a564c3d1f17a9ecb165418ef MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module minherit2
  2. // A multiple inheritance example, mainly for Java, C# and D.
  3. // The example shows how it is possible to turn C++ abstract base classes into
  4. // Java/C#/D interfaces.
  5. // In the future, all this trouble might be more automated.
  6. %warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE,
  7. SWIGWARN_CSHARP_MULTIPLE_INHERITANCE,
  8. SWIGWARN_D_MULTIPLE_INHERITANCE,
  9. SWIGWARN_RUBY_MULTIPLE_INHERITANCE,
  10. SWIGWARN_PHP_MULTIPLE_INHERITANCE) RemoteMpe;
  11. #if defined(SWIGJAVA) || defined(SWIGCSHARP) || defined(SWIGD)
  12. #if defined(SWIGCSHARP)
  13. #define javaclassmodifiers csclassmodifiers
  14. #define javabody csbody
  15. #define javafinalize csfinalize
  16. #define javadestruct csdestruct
  17. #define javaout csout
  18. #define javainterfaces csinterfaces
  19. #define javabase csbase
  20. #endif
  21. #if defined(SWIGD)
  22. #define javaclassmodifiers dclassmodifiers
  23. #define javabody dbody
  24. #define javafinalize ddestructor
  25. #define javadestruct ddispose
  26. #define javaout dout
  27. #define javainterfaces dinterfaces
  28. #define javabase dbase
  29. %typemap(dimports) RemoteMpe %{
  30. $importtype(IRemoteSyncIO)
  31. $importtype(IRemoteAsyncIO)
  32. %}
  33. #endif
  34. // Modify multiple inherited base classes into inheriting interfaces
  35. %typemap(javainterfaces) RemoteMpe "IRemoteSyncIO, IRemoteAsyncIO";
  36. %typemap(javabase, replace="1") RemoteMpe "";
  37. // Turn the proxy class into an interface
  38. %typemap(javaclassmodifiers) IRemoteSyncIO "public interface";
  39. %typemap(javaclassmodifiers) IRemoteAsyncIO "public interface";
  40. %typemap(javabody) IRemoteSyncIO "";
  41. %typemap(javabody) IRemoteAsyncIO "";
  42. %typemap(javafinalize) IRemoteSyncIO "";
  43. %typemap(javafinalize) IRemoteAsyncIO "";
  44. %typemap(javadestruct) IRemoteSyncIO "";
  45. %typemap(javadestruct) IRemoteAsyncIO "";
  46. // Turn the methods into abstract methods
  47. %typemap(javaout) void IRemoteSyncIO::syncmethod ";"
  48. %typemap(javaout) void IRemoteAsyncIO::asyncmethod ";"
  49. #if defined(SWIGJAVA)
  50. %javamethodmodifiers IRemoteSyncIO::syncmethod "abstract public";
  51. %javamethodmodifiers IRemoteAsyncIO::asyncmethod "abstract public";
  52. // Features are inherited by derived classes, so override this
  53. %javamethodmodifiers RemoteMpe::syncmethod "public"
  54. %javamethodmodifiers RemoteMpe::asyncmethod "public"
  55. #elif defined(SWIGCSHARP)
  56. %csmethodmodifiers IRemoteSyncIO::syncmethod "";
  57. %csmethodmodifiers IRemoteAsyncIO::asyncmethod "";
  58. // Features are inherited by derived classes, so override this
  59. %csmethodmodifiers RemoteMpe::syncmethod "public"
  60. %csmethodmodifiers RemoteMpe::asyncmethod "public"
  61. #elif defined(SWIGD)
  62. %dmethodmodifiers IRemoteSyncIO::syncmethod "";
  63. %dmethodmodifiers IRemoteAsyncIO::asyncmethod "";
  64. // Features are inherited by derived classes, so override this
  65. %dmethodmodifiers RemoteMpe::syncmethod "public"
  66. %dmethodmodifiers RemoteMpe::asyncmethod "public"
  67. #endif
  68. #endif
  69. %inline %{
  70. class IRemoteSyncIO
  71. {
  72. public:
  73. virtual ~IRemoteSyncIO () {}
  74. virtual void syncmethod() = 0;
  75. protected:
  76. IRemoteSyncIO () {}
  77. private:
  78. IRemoteSyncIO (const IRemoteSyncIO&);
  79. IRemoteSyncIO& operator= (const IRemoteSyncIO&);
  80. };
  81. class IRemoteAsyncIO
  82. {
  83. public:
  84. virtual ~IRemoteAsyncIO () {}
  85. virtual void asyncmethod() = 0;
  86. protected:
  87. IRemoteAsyncIO () {}
  88. private:
  89. IRemoteAsyncIO (const IRemoteAsyncIO&);
  90. IRemoteAsyncIO& operator= (const IRemoteAsyncIO&);
  91. };
  92. class RemoteMpe : public IRemoteSyncIO, public IRemoteAsyncIO
  93. {
  94. public:
  95. virtual void syncmethod() {}
  96. virtual void asyncmethod() {}
  97. };
  98. %}