1555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%include <std_common.i>
2555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
3555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%{
4555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#include <utility>
5555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot%}
6555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
7555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
8555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robotnamespace std {
9555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  template <class T, class U > struct pair {
10555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef T first_type;
11555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef U second_type;
12555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
13555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(T);
14555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(U);
15555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
16555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %fragment(SWIG_Traits_frag(std::pair<T,U >), "header",
17555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(T),
18555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(U),
19555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment="StdPairTraits") {
20555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      namespace swig {
21555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	template <>  struct traits<std::pair<T,U > > {
22555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  typedef pointer_category category;
23555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  static const char* type_name() {
24555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	    return "std::pair<" #T "," #U " >";
25555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  }
26555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	};
27555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      }
28555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    }
29555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
30555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifndef SWIG_STD_PAIR_ASVAL
31555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T,U >);
32555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#else
33555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair<T,U >);
34555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
35555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
36555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair();
37555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair(T first, U second);
38555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair(const pair& p);
39555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
40555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    template <class U1, class U2> pair(const pair<U1, U2> &p);
41555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
42555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    T first;
43555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    U second;
44555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
45555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifdef %swig_pair_methods
46555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    // Add swig/language extra methods
47555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %swig_pair_methods(std::pair<T,U >)
48555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
49555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  };
50555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
51555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  // ***
52555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  // The following specializations should disappear or get
53555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  // simplified when a 'const SWIGTYPE*&' can be defined
54555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  // ***
55555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  template <class T, class U > struct pair<T, U*> {
56555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef T first_type;
57555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef U* second_type;
58555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
59555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(T);
60555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(U);
61555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
62555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %fragment(SWIG_Traits_frag(std::pair<T,U* >), "header",
63555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(T),
64555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(U),
65555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment="StdPairTraits") {
66555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      namespace swig {
67555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	template <>  struct traits<std::pair<T,U* > > {
68555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  typedef pointer_category category;
69555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  static const char* type_name() {
70555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	    return "std::pair<" #T "," #U " * >";
71555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  }
72555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	};
73555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      }
74555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    }
75555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
76555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T,U* >);
77555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
78555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair();
79555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair(T __a, U* __b);
80555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair(const pair& __p);
81555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
82555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    T first;
83555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    U* second;
84555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
85555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifdef %swig_pair_methods
86555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    // Add swig/language extra methods
87555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %swig_pair_methods(std::pair<T,U*>)
88555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
89555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  };
90555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
91555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  template <class T, class U > struct pair<T*, U> {
92555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef T* first_type;
93555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef U second_type;
94555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
95555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(T);
96555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(U);
97555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
98555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %fragment(SWIG_Traits_frag(std::pair<T*,U >), "header",
99555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(T),
100555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(U),
101555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment="StdPairTraits") {
102555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      namespace swig {
103555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	template <>  struct traits<std::pair<T*,U > > {
104555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  typedef pointer_category category;
105555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  static const char* type_name() {
106555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	    return "std::pair<" #T " *," #U " >";
107555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  }
108555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	};
109555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      }
110555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    }
111555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
112555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair<T*,U >);
113555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
114555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair();
115555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair(T* __a, U __b);
116555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair(const pair& __p);
117555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
118555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    T* first;
119555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    U second;
120555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
121555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifdef %swig_pair_methods
122555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    // Add swig/language extra methods
123555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %swig_pair_methods(std::pair<T*,U >)
124555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
125555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  };
126555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
127555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  template <class T, class U > struct pair<T*, U*> {
128555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef T* first_type;
129555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    typedef U* second_type;
130555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
131555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(T);
132555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %traits_swigtype(U);
133555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
134555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %fragment(SWIG_Traits_frag(std::pair<T*,U* >), "header",
135555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(T),
136555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment=SWIG_Traits_frag(U),
137555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	      fragment="StdPairTraits") {
138555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      namespace swig {
139555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	template <>  struct traits<std::pair<T*,U* > > {
140555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  typedef pointer_category category;
141555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  static const char* type_name() {
142555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	    return "std::pair<" #T " *," #U " * >";
143555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	  }
144555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot	};
145555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot      }
146555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    }
147555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
148555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair<T*,U* >);
149555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
150555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair();
151555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair(T* __a, U* __b);
152555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    pair(const pair& __p);
153555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
154555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    T* first;
155555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    U* second;
156555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
157555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#ifdef %swig_pair_methods
158555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    // Add swig/language extra methods
159555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot    %swig_pair_methods(std::pair<T*,U*>)
160555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot#endif
161555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot  };
162555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot
163555d6a58708babe6bb79b5824ef24eb1f37f708android-build-team Robot}
164