OLD | NEW |
(Empty) | |
| 1 %include <std_common.i> |
| 2 |
| 3 %{ |
| 4 #include <utility> |
| 5 %} |
| 6 |
| 7 |
| 8 namespace std { |
| 9 template <class T, class U > struct pair { |
| 10 typedef T first_type; |
| 11 typedef U second_type; |
| 12 |
| 13 %traits_swigtype(T); |
| 14 %traits_swigtype(U); |
| 15 |
| 16 %fragment(SWIG_Traits_frag(std::pair<T,U >), "header", |
| 17 fragment=SWIG_Traits_frag(T), |
| 18 fragment=SWIG_Traits_frag(U), |
| 19 fragment="StdPairTraits") { |
| 20 namespace swig { |
| 21 template <> struct traits<std::pair<T,U > > { |
| 22 typedef pointer_category category; |
| 23 static const char* type_name() { |
| 24 return "std::pair<" #T "," #U " >"; |
| 25 } |
| 26 }; |
| 27 } |
| 28 } |
| 29 |
| 30 #ifndef SWIG_STD_PAIR_ASVAL |
| 31 %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T,U >); |
| 32 #else |
| 33 %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair<T,U >); |
| 34 #endif |
| 35 |
| 36 pair(); |
| 37 pair(T first, U second); |
| 38 pair(const pair& p); |
| 39 |
| 40 template <class U1, class U2> pair(const pair<U1, U2> &p); |
| 41 |
| 42 T first; |
| 43 U second; |
| 44 |
| 45 #ifdef %swig_pair_methods |
| 46 // Add swig/language extra methods |
| 47 %swig_pair_methods(std::pair<T,U >) |
| 48 #endif |
| 49 }; |
| 50 |
| 51 // *** |
| 52 // The following specializations should dissapear or get |
| 53 // simplified when a 'const SWIGTYPE*&' can be defined |
| 54 // *** |
| 55 template <class T, class U > struct pair<T, U*> { |
| 56 typedef T first_type; |
| 57 typedef U* second_type; |
| 58 |
| 59 %traits_swigtype(T); |
| 60 %traits_swigtype(U); |
| 61 |
| 62 %fragment(SWIG_Traits_frag(std::pair<T,U* >), "header", |
| 63 fragment=SWIG_Traits_frag(T), |
| 64 fragment=SWIG_Traits_frag(U), |
| 65 fragment="StdPairTraits") { |
| 66 namespace swig { |
| 67 template <> struct traits<std::pair<T,U* > > { |
| 68 typedef pointer_category category; |
| 69 static const char* type_name() { |
| 70 return "std::pair<" #T "," #U " * >"; |
| 71 } |
| 72 }; |
| 73 } |
| 74 } |
| 75 |
| 76 %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T,U* >); |
| 77 |
| 78 pair(); |
| 79 pair(T __a, U* __b); |
| 80 pair(const pair& __p); |
| 81 |
| 82 T first; |
| 83 U* second; |
| 84 |
| 85 #ifdef %swig_pair_methods |
| 86 // Add swig/language extra methods |
| 87 %swig_pair_methods(std::pair<T,U*>) |
| 88 #endif |
| 89 }; |
| 90 |
| 91 template <class T, class U > struct pair<T*, U> { |
| 92 typedef T* first_type; |
| 93 typedef U second_type; |
| 94 |
| 95 %traits_swigtype(T); |
| 96 %traits_swigtype(U); |
| 97 |
| 98 %fragment(SWIG_Traits_frag(std::pair<T*,U >), "header", |
| 99 fragment=SWIG_Traits_frag(T), |
| 100 fragment=SWIG_Traits_frag(U), |
| 101 fragment="StdPairTraits") { |
| 102 namespace swig { |
| 103 template <> struct traits<std::pair<T*,U > > { |
| 104 typedef pointer_category category; |
| 105 static const char* type_name() { |
| 106 return "std::pair<" #T " *," #U " >"; |
| 107 } |
| 108 }; |
| 109 } |
| 110 } |
| 111 |
| 112 %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T*,U >); |
| 113 |
| 114 pair(); |
| 115 pair(T* __a, U __b); |
| 116 pair(const pair& __p); |
| 117 |
| 118 T* first; |
| 119 U second; |
| 120 |
| 121 #ifdef %swig_pair_methods |
| 122 // Add swig/language extra methods |
| 123 %swig_pair_methods(std::pair<T*,U >) |
| 124 #endif |
| 125 }; |
| 126 |
| 127 template <class T, class U > struct pair<T*, U*> { |
| 128 typedef T* first_type; |
| 129 typedef U* second_type; |
| 130 |
| 131 %traits_swigtype(T); |
| 132 %traits_swigtype(U); |
| 133 |
| 134 %fragment(SWIG_Traits_frag(std::pair<T*,U* >), "header", |
| 135 fragment=SWIG_Traits_frag(T), |
| 136 fragment=SWIG_Traits_frag(U), |
| 137 fragment="StdPairTraits") { |
| 138 namespace swig { |
| 139 template <> struct traits<std::pair<T*,U* > > { |
| 140 typedef pointer_category category; |
| 141 static const char* type_name() { |
| 142 return "std::pair<" #T " *," #U " * >"; |
| 143 } |
| 144 }; |
| 145 } |
| 146 } |
| 147 |
| 148 %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair<T*,U* >); |
| 149 |
| 150 pair(); |
| 151 pair(T* __a, U* __b); |
| 152 pair(const pair& __p); |
| 153 |
| 154 T* first; |
| 155 U* second; |
| 156 |
| 157 #ifdef %swig_pair_methods |
| 158 // Add swig/language extra methods |
| 159 %swig_pair_methods(std::pair<T*,U*>) |
| 160 #endif |
| 161 }; |
| 162 |
| 163 } |
OLD | NEW |