PageRenderTime 42ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

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

#
Swig | 215 lines | 181 code | 34 blank | 0 comment | 0 complexity | df9d8f75859806594b0e7cd1ebc6298a MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module typemap_global_scope
  2. // Test global scope operator :: for typemaps. Previously SWIG would not use a typemap that did not specify the global scope
  3. // operator for a type that did have it, and vice-versa.
  4. %typemap(in) SWIGTYPE "_this_will_not_compile_SWIGTYPE_ \"$type\""
  5. %typemap(in) const SWIGTYPE & "_this_will_not_compile_const_SWIGTYPE_REF_ \"$type\""
  6. %typemap(in) enum SWIGTYPE "_this_will_not_compile_enum_SWIGTYPE_ \"$type\""
  7. %typemap(in) const enum SWIGTYPE & "_this_will_not_compile_const_enum_SWIGTYPE_REF_ \"$type\""
  8. /////////////////////////////////////////////////////////////////////
  9. // Structs
  10. /////////////////////////////////////////////////////////////////////
  11. %typemap(in) Test1, ::Test2, Space::Test3, ::Space::Test4 "$1 = $type(); /*in typemap for $type*/"
  12. %typemap(in) const Test1 &, const ::Test2 &, const Space::Test3 &, const ::Space::Test4 & "/*in typemap for $type*/"
  13. %inline %{
  14. struct Test1 {};
  15. struct Test2 {};
  16. namespace Space {
  17. struct Test3 {};
  18. struct Test4 {};
  19. }
  20. %}
  21. %inline %{
  22. void test1a(Test1 t, const Test1 &tt) {}
  23. void test1b(::Test1 t, const ::Test1 &tt) {}
  24. void test2a(Test2 t, const Test2 &tt) {}
  25. void test2b(::Test2 t, const ::Test2 &tt) {}
  26. void test3a(Space::Test3 t, const Space::Test3 &tt) {}
  27. void test3b(::Space::Test3 t, const ::Space::Test3 &tt) {}
  28. namespace Space {
  29. void test3c(Space::Test3 t, const Space::Test3 &tt) {}
  30. void test3d(::Space::Test3 t, const ::Space::Test3 &tt) {}
  31. void test3e(Test3 t, const Test3 &tt) {}
  32. }
  33. void test4a(Space::Test4 t, const Space::Test4 &tt) {}
  34. void test4b(::Space::Test4 t, const ::Space::Test4 &tt) {}
  35. namespace Space {
  36. void test4c(Space::Test4 t, const Space::Test4 &tt) {}
  37. void test4d(::Space::Test4 t, const ::Space::Test4 &tt) {}
  38. void test4e(Test4 t, const Test4 &tt) {}
  39. }
  40. %}
  41. /////////////////////////////////////////////////////////////////////
  42. // Templates
  43. /////////////////////////////////////////////////////////////////////
  44. %inline %{
  45. struct XX {};
  46. %}
  47. %typemap(in) TemplateTest1< ::XX >, ::TemplateTest2< ::XX >, Space::TemplateTest3< ::XX >, ::Space::TemplateTest4< ::XX > "$1 = $type(); /* in typemap for $type */"
  48. %typemap(in) const TemplateTest1< XX > &, const ::TemplateTest2< XX > &, const Space::TemplateTest3< XX > &, const ::Space::TemplateTest4< XX > & "/* in typemap for $type */"
  49. %inline %{
  50. template<typename T> struct TemplateTest1 { T m_t; };
  51. template<typename T> struct TemplateTest2 { T m_t; };
  52. namespace Space {
  53. template<typename T> struct TemplateTest3 { T m_t; };
  54. template<typename T> struct TemplateTest4 { T m_t; };
  55. }
  56. %}
  57. %template(TemplateTest1XX) TemplateTest1< ::XX >;
  58. %template(TemplateTest2XX) TemplateTest2< ::XX >;
  59. %template(TemplateTest3XX) Space::TemplateTest3< ::XX >;
  60. %template(TemplateTest4XX) Space::TemplateTest4< ::XX >;
  61. %inline %{
  62. void test_template_1a(TemplateTest1< ::XX > t, const TemplateTest1< ::XX > &tt) {}
  63. void test_template_1b(::TemplateTest1< ::XX > t, const ::TemplateTest1< ::XX > &tt) {}
  64. void test_template_2a(TemplateTest2< ::XX > t, const TemplateTest2< ::XX > &tt) {}
  65. void test_template_2b(::TemplateTest2< ::XX > t, const ::TemplateTest2< ::XX > &tt) {}
  66. void test_template_3a(Space::TemplateTest3< ::XX > t, const Space::TemplateTest3< ::XX > &tt) {}
  67. void test_template_3b(::Space::TemplateTest3< ::XX > t, const ::Space::TemplateTest3< ::XX > &tt) {}
  68. namespace Space {
  69. void test_template_3c(Space::TemplateTest3< ::XX > t, const Space::TemplateTest3< ::XX > &tt) {}
  70. void test_template_3d(::Space::TemplateTest3< ::XX > t, const ::Space::TemplateTest3< ::XX > &tt) {}
  71. void test_template_3e(TemplateTest3< ::XX > t, const TemplateTest3< ::XX > &tt) {}
  72. }
  73. void test_template_4a(Space::TemplateTest4< ::XX > t, const Space::TemplateTest4< ::XX > &tt) {}
  74. void test_template_4b(::Space::TemplateTest4< ::XX > t, const ::Space::TemplateTest4< ::XX > &tt) {}
  75. namespace Space {
  76. void test_template_4c(Space::TemplateTest4< ::XX > t, const Space::TemplateTest4< ::XX > &tt) {}
  77. void test_template_4d(::Space::TemplateTest4< ::XX > t, const ::Space::TemplateTest4< ::XX > &tt) {}
  78. void test_template_4e(TemplateTest4< ::XX > t, const TemplateTest4< ::XX > &tt) {}
  79. }
  80. %}
  81. /////////////////////////////////////////////////////////////////////
  82. // Enums
  83. /////////////////////////////////////////////////////////////////////
  84. %typemap(in) Enum1, ::Enum2, Space::Enum3, ::Space::Enum4 "$1 = $1_type(); /*in typemap for $type*/"
  85. %typemap(in) const Enum1 &, const ::Enum2 &, const Space::Enum3 &, const ::Space::Enum4 & "/*in typemap for $type*/"
  86. %inline %{
  87. enum Enum1 { enum_1 };
  88. enum Enum2 { enum_2 };
  89. namespace Space {
  90. enum Enum3 { enum_3 };
  91. enum Enum4 { enum_4 };
  92. }
  93. %}
  94. %inline %{
  95. void test_enum_1a(Enum1 t, const Enum1 &tt) {}
  96. void test_enum_1b(::Enum1 t, const ::Enum1 &tt) {}
  97. void test_enum_2a(Enum2 t, const Enum2 &tt) {}
  98. void test_enum_2b(::Enum2 t, const ::Enum2 &tt) {}
  99. void test_enum_3a(Space::Enum3 t, const Space::Enum3 &tt) {}
  100. void test_enum_3b(::Space::Enum3 t, const ::Space::Enum3 &tt) {}
  101. namespace Space {
  102. void test_enum_3c(Space::Enum3 t, const Space::Enum3 &tt) {}
  103. void test_enum_3d(::Space::Enum3 t, const ::Space::Enum3 &tt) {}
  104. void test_enum_3e(Enum3 t, const Enum3 &tt) {}
  105. }
  106. void test_enum_4a(Space::Enum4 t, const Space::Enum4 &tt) {}
  107. void test_enum_4b(::Space::Enum4 t, const ::Space::Enum4 &tt) {}
  108. namespace Space {
  109. void test_enum_4c(Space::Enum4 t, const Space::Enum4 &tt) {}
  110. void test_enum_4d(::Space::Enum4 t, const ::Space::Enum4 &tt) {}
  111. void test_enum_4e(Enum4 t, const Enum4 &tt) {}
  112. }
  113. %}
  114. #if 0
  115. /////////////////////////////////////////////////////////////////////
  116. // Enums with enum specified in typemap
  117. /////////////////////////////////////////////////////////////////////
  118. %typemap(in) enum Mune1, enum ::Mune2, enum Space::Mune3, enum ::Space::Mune4 "/*in typemap for $type*/"
  119. %typemap(in) const enum Mune1 &, const enum ::Mune2 &, const enum Space::Mune3 &, const enum ::Space::Mune4 & "/*in typemap for $type*/"
  120. %inline %{
  121. enum Mune1 { mune_1 };
  122. enum Mune2 { mune_2 };
  123. namespace Space {
  124. enum Mune3 { mune_3 };
  125. enum Mune4 { mune_4 };
  126. }
  127. %}
  128. %inline %{
  129. void test_mune_1a(Mune1 t, const Mune1 &tt) {}
  130. void test_mune_1b(::Mune1 t, const ::Mune1 &tt) {}
  131. void test_mune_2a(Mune2 t, const Mune2 &tt) {}
  132. void test_mune_2b(::Mune2 t, const ::Mune2 &tt) {}
  133. void test_mune_3a(Space::Mune3 t, const Space::Mune3 &tt) {}
  134. void test_mune_3b(::Space::Mune3 t, const ::Space::Mune3 &tt) {}
  135. namespace Space {
  136. void test_mune_3c(Space::Mune3 t, const Space::Mune3 &tt) {}
  137. void test_mune_3d(::Space::Mune3 t, const ::Space::Mune3 &tt) {}
  138. void test_mune_3e(Mune3 t, const Mune3 &tt) {}
  139. }
  140. void test_mune_4a(Space::Mune4 t, const Space::Mune4 &tt) {}
  141. void test_mune_4b(::Space::Mune4 t, const ::Space::Mune4 &tt) {}
  142. namespace Space {
  143. void test_mune_4c(Space::Mune4 t, const Space::Mune4 &tt) {}
  144. void test_mune_4d(::Space::Mune4 t, const ::Space::Mune4 &tt) {}
  145. void test_mune_4e(Mune4 t, const Mune4 &tt) {}
  146. }
  147. %}
  148. /////////////////////////////////////////////////////////////////////
  149. // Enums with enum specified in type
  150. /////////////////////////////////////////////////////////////////////
  151. %typemap(in) Nemu1, ::Nemu2, Space::Nemu3, ::Space::Nemu4 "/*in typemap for $type*/"
  152. %typemap(in) const Nemu1 &, const ::Nemu2 &, const Space::Nemu3 &, const ::Space::Nemu4 & "/*in typemap for $type*/"
  153. %inline %{
  154. enum Nemu1 { nemu_1 };
  155. enum Nemu2 { nemu_2 };
  156. namespace Space {
  157. enum Nemu3 { nemu_3 };
  158. enum Nemu4 { nemu_4 };
  159. }
  160. %}
  161. %inline %{
  162. void test_nemu_1a(enum Nemu1 t, const enum Nemu1 &tt) {}
  163. void test_nemu_1b(enum ::Nemu1 t, const enum ::Nemu1 &tt) {}
  164. void test_nemu_2a(enum Nemu2 t, const enum Nemu2 &tt) {}
  165. void test_nemu_2b(enum ::Nemu2 t, const enum ::Nemu2 &tt) {}
  166. void test_nemu_3a(enum Space::Nemu3 t, const enum Space::Nemu3 &tt) {}
  167. void test_nemu_3b(enum ::Space::Nemu3 t, const enum ::Space::Nemu3 &tt) {}
  168. namespace Space {
  169. void test_nemu_3c(enum Space::Nemu3 t, const enum Space::Nemu3 &tt) {}
  170. void test_nemu_3d(enum ::Space::Nemu3 t, const enum ::Space::Nemu3 &tt) {}
  171. void test_nemu_3e(enum Nemu3 t, const enum Nemu3 &tt) {}
  172. }
  173. void test_nemu_4a(enum Space::Nemu4 t, const enum Space::Nemu4 &tt) {}
  174. void test_nemu_4b(enum ::Space::Nemu4 t, const enum ::Space::Nemu4 &tt) {}
  175. namespace Space {
  176. void test_nemu_4c(enum Space::Nemu4 t, const enum Space::Nemu4 &tt) {}
  177. void test_nemu_4d(enum ::Space::Nemu4 t, const enum ::Space::Nemu4 &tt) {}
  178. void test_nemu_4e(enum Nemu4 t, const enum Nemu4 &tt) {}
  179. }
  180. %}
  181. #endif