1 %include <std_common.i>
9 template <class T, class U > struct pair {
11 typedef U second_type;
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") {
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 " >";
30 #ifndef SWIG_STD_PAIR_ASVAL
31 %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T,U >);
33 %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair<T,U >);
37 pair(T first, U second);
40 template <class U1, class U2> pair(const pair<U1, U2> &p);
45 #ifdef %swig_pair_methods
46 // Add swig/language extra methods
47 %swig_pair_methods(std::pair<T,U >)
52 // The following specializations should dissapear or get
53 // simplified when a 'const SWIGTYPE*&' can be defined
55 template <class T, class U > struct pair<T, U*> {
57 typedef U* second_type;
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") {
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 " * >";
76 %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T,U* >);
80 pair(const pair& __p);
85 #ifdef %swig_pair_methods
86 // Add swig/language extra methods
87 %swig_pair_methods(std::pair<T,U*>)
91 template <class T, class U > struct pair<T*, U> {
92 typedef T* first_type;
93 typedef U second_type;
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") {
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 " >";
112 %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T*,U >);
116 pair(const pair& __p);
121 #ifdef %swig_pair_methods
122 // Add swig/language extra methods
123 %swig_pair_methods(std::pair<T*,U >)
127 template <class T, class U > struct pair<T*, U*> {
128 typedef T* first_type;
129 typedef U* second_type;
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") {
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 " * >";
148 %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair<T*,U* >);
151 pair(T* __a, U* __b);
152 pair(const pair& __p);
157 #ifdef %swig_pair_methods
158 // Add swig/language extra methods
159 %swig_pair_methods(std::pair<T*,U*>)