| %include <std_common.i> | |
| %{ | |
| #include <utility> | |
| %} | |
| namespace std { | |
| template <class T, class U > struct pair { | |
| typedef T first_type; | |
| typedef U second_type; | |
| %traits_swigtype(T); | |
| %traits_swigtype(U); | |
| %fragment(SWIG_Traits_frag(std::pair< T, U >), "header", | |
| fragment=SWIG_Traits_frag(T), | |
| fragment=SWIG_Traits_frag(U), | |
| fragment="StdPairTraits") { | |
| namespace swig { | |
| template <> struct traits<std::pair< T, U > > { | |
| typedef pointer_category category; | |
| static const char* type_name() { | |
| return "std::pair<" #T "," #U " >"; | |
| } | |
| }; | |
| } | |
| } | |
| #ifndef SWIG_STD_PAIR_ASVAL | |
| %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T, U >); | |
| #else | |
| %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair< T, U >); | |
| #endif | |
| pair(); | |
| pair(T first, U second); | |
| pair(const pair& other); | |
| template <class U1, class U2> pair(const pair< U1, U2 > &other); | |
| T first; | |
| U second; | |
| #ifdef %swig_pair_methods | |
| // Add swig/language extra methods | |
| %swig_pair_methods(std::pair< T, U >) | |
| #endif | |
| }; | |
| // *** | |
| // The following specializations should disappear or get | |
| // simplified when a 'const SWIGTYPE*&' can be defined | |
| // *** | |
| template <class T, class U > struct pair< T, U* > { | |
| typedef T first_type; | |
| typedef U* second_type; | |
| %traits_swigtype(T); | |
| %traits_swigtype(U); | |
| %fragment(SWIG_Traits_frag(std::pair< T, U* >), "header", | |
| fragment=SWIG_Traits_frag(T), | |
| fragment=SWIG_Traits_frag(U), | |
| fragment="StdPairTraits") { | |
| namespace swig { | |
| template <> struct traits<std::pair< T, U* > > { | |
| typedef pointer_category category; | |
| static const char* type_name() { | |
| return "std::pair<" #T "," #U " * >"; | |
| } | |
| }; | |
| } | |
| } | |
| %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T, U* >); | |
| pair(); | |
| pair(T first, U* second); | |
| pair(const pair& other); | |
| T first; | |
| U* second; | |
| #ifdef %swig_pair_methods | |
| // Add swig/language extra methods | |
| %swig_pair_methods(std::pair< T, U* >) | |
| #endif | |
| }; | |
| template <class T, class U > struct pair< T*, U > { | |
| typedef T* first_type; | |
| typedef U second_type; | |
| %traits_swigtype(T); | |
| %traits_swigtype(U); | |
| %fragment(SWIG_Traits_frag(std::pair< T*, U >), "header", | |
| fragment=SWIG_Traits_frag(T), | |
| fragment=SWIG_Traits_frag(U), | |
| fragment="StdPairTraits") { | |
| namespace swig { | |
| template <> struct traits<std::pair< T*, U > > { | |
| typedef pointer_category category; | |
| static const char* type_name() { | |
| return "std::pair<" #T " *," #U " >"; | |
| } | |
| }; | |
| } | |
| } | |
| %typemap_traits_ptr(SWIG_TYPECHECK_PAIR, std::pair< T*, U >); | |
| pair(); | |
| pair(T* first, U second); | |
| pair(const pair& other); | |
| T* first; | |
| U second; | |
| #ifdef %swig_pair_methods | |
| // Add swig/language extra methods | |
| %swig_pair_methods(std::pair< T*, U >) | |
| #endif | |
| }; | |
| template <class T, class U > struct pair< T*, U* > { | |
| typedef T* first_type; | |
| typedef U* second_type; | |
| %traits_swigtype(T); | |
| %traits_swigtype(U); | |
| %fragment(SWIG_Traits_frag(std::pair< T*, U* >), "header", | |
| fragment=SWIG_Traits_frag(T), | |
| fragment=SWIG_Traits_frag(U), | |
| fragment="StdPairTraits") { | |
| namespace swig { | |
| template <> struct traits<std::pair< T*, U* > > { | |
| typedef pointer_category category; | |
| static const char* type_name() { | |
| return "std::pair<" #T " *," #U " * >"; | |
| } | |
| }; | |
| } | |
| } | |
| %typemap_traits(SWIG_TYPECHECK_PAIR, std::pair< T*, U* >); | |
| pair(); | |
| pair(T* first, U* second); | |
| pair(const pair& other); | |
| T* first; | |
| U* second; | |
| #ifdef %swig_pair_methods | |
| // Add swig/language extra methods | |
| %swig_pair_methods(std::pair< T*, U* >) | |
| #endif | |
| }; | |
| } |