1 // 2 // std::set 3 // 4 5 %include <std_set.i> 6 7 // Multiset 8 9 %define %std_multiset_methods(multiset...) 10 %std_set_methods_common(multiset); 11 %enddef 12 13 14 // ------------------------------------------------------------------------ 15 // std::multiset 16 // 17 // const declarations are used to guess the intent of the function being 18 // exported; therefore, the following rationale is applied: 19 // 20 // -- f(std::multiset<T>), f(const std::multiset<T>&): 21 // the parameter being read-only, either a sequence or a 22 // previously wrapped std::multiset<T> can be passed. 23 // -- f(std::multiset<T>&), f(std::multiset<T>*): 24 // the parameter may be modified; therefore, only a wrapped std::multiset 25 // can be passed. 26 // -- std::multiset<T> f(), const std::multiset<T>& f(): 27 // the set is returned by copy; therefore, a sequence of T:s 28 // is returned which is most easily used in other functions 29 // -- std::multiset<T>& f(), std::multiset<T>* f(): 30 // the set is returned by reference; therefore, a wrapped std::multiset 31 // is returned 32 // -- const std::multiset<T>* f(), f(const std::multiset<T>*): 33 // for consistency, they expect and return a plain set pointer. 34 // ------------------------------------------------------------------------ 35 36 37 // exported classes 38 39 namespace std { 40 41 //multiset 42 43 template <class _Key, class _Compare = std::less<_Key>, 44 class _Alloc = allocator<_Key> > 45 class multiset { 46 public: 47 typedef size_t size_type; 48 typedef ptrdiff_t difference_type; 49 typedef _Key value_type; 50 typedef _Key key_type; 51 typedef value_type* pointer; 52 typedef const value_type* const_pointer; 53 typedef value_type& reference; 54 typedef const value_type& const_reference; 55 typedef _Alloc allocator_type; 56 57 %traits_swigtype(_Key); 58 59 %fragment(SWIG_Traits_frag(std::multiset<_Key, _Compare, _Alloc >), "header", 60 fragment=SWIG_Traits_frag(_Key), 61 fragment="StdMultisetTraits") { 62 namespace swig { 63 template <> struct traits<std::multiset<_Key, _Compare, _Alloc > > { 64 typedef pointer_category category; 65 static const char* type_name() { 66 return "std::multiset<" #_Key "," #_Compare "," #_Alloc " >"; 67 } 68 }; 69 } 70 } 71 72 %typemap_traits_ptr(SWIG_TYPECHECK_MULTISET, std::multiset<_Key, _Compare, _Alloc >); 73 74 multiset( const _Compare& ); 75 76 #ifdef %swig_multiset_methods 77 // Add swig/language extra methods 78 %swig_multiset_methods(std::multiset<_Key, _Compare, _Alloc >); 79 #endif 80 81 %std_multiset_methods(multiset); 82 }; 83 } 84