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

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

#
Swig | 144 lines | 102 code | 42 blank | 0 comment | 0 complexity | a199155be73b4e578c48c81fcd5df7a3 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module(directors="1") director_basic
  2. #pragma SWIG nowarn=SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR
  3. %{
  4. #include <string>
  5. class Foo {
  6. public:
  7. virtual ~Foo() {}
  8. virtual std::string ping() { return "Foo::ping()"; }
  9. virtual std::string pong() { return "Foo::pong();" + ping(); }
  10. static Foo* get_self(Foo *slf) {return slf;}
  11. };
  12. %}
  13. %include <std_string.i>
  14. %feature("director") Foo;
  15. class Foo {
  16. public:
  17. virtual ~Foo();
  18. virtual std::string ping();
  19. virtual std::string pong();
  20. static Foo* get_self(Foo *slf);
  21. };
  22. %{
  23. #include <complex>
  24. %}
  25. %feature("director") A;
  26. // basic renaming
  27. %rename(rg) A::gg;
  28. %feature("nodirector") hi::A1::gg;
  29. %inline %{
  30. struct A{
  31. A(std::complex<int> i, double d=0.0) {}
  32. A(int i, bool j=false) {}
  33. virtual ~A() {}
  34. virtual int f(int i=0) {return i;}
  35. virtual int gg(int i=0) {return i;}
  36. };
  37. namespace hi {
  38. struct A1 : public A {
  39. A1(std::complex<int> i, double d=0.0) : A(i, d) {}
  40. A1(int i, bool j=false) : A(i, j) {}
  41. virtual int ff(int i = 0) {return i;}
  42. };
  43. }
  44. %}
  45. %feature("director") MyClass;
  46. %inline %{
  47. typedef void VoidType;
  48. struct Bar
  49. {
  50. int x;
  51. Bar(int _x = 0) : x(_x)
  52. {
  53. }
  54. };
  55. class MyClass {
  56. public:
  57. MyClass(int a = 0)
  58. {
  59. }
  60. virtual void method(VoidType *)
  61. {
  62. }
  63. virtual ~MyClass()
  64. {
  65. }
  66. virtual Bar vmethod(Bar b)
  67. {
  68. b.x += 13;
  69. return b;
  70. }
  71. virtual Bar* pmethod(Bar *b)
  72. {
  73. b->x += 12;
  74. return b;
  75. }
  76. Bar cmethod(const Bar &b)
  77. {
  78. return vmethod(b);
  79. }
  80. static MyClass *get_self(MyClass *c)
  81. {
  82. return c;
  83. }
  84. static Bar * call_pmethod(MyClass *myclass, Bar *b) {
  85. return myclass->pmethod(b);
  86. }
  87. };
  88. template<class T>
  89. class MyClassT {
  90. public:
  91. MyClassT(int a = 0)
  92. {
  93. }
  94. virtual void method(VoidType *)
  95. {
  96. }
  97. virtual ~MyClassT()
  98. {
  99. }
  100. };
  101. %}
  102. %template(MyClassT_i) MyClassT<int>;