/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