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