1 /* 2 Multisets 3 */ 4 5 %include <std_set.i> 6 7 %fragment("StdMultisetTraits","header",fragment="StdSequenceTraits") 8 %{ 9 namespace swig { 10 template <class RubySeq, class T> 11 inline void 12 assign(const RubySeq& rubyseq, std::multiset<T>* seq) { 13 // seq->insert(rubyseq.begin(), rubyseq.end()); // not used as not always implemented 14 typedef typename RubySeq::value_type value_type; 15 typename RubySeq::const_iterator it = rubyseq.begin(); 16 for (;it != rubyseq.end(); ++it) { 17 seq->insert(seq->end(),(value_type)(*it)); 18 } 19 } 20 21 template <class T> 22 struct traits_asptr<std::multiset<T> > { 23 static int asptr(VALUE obj, std::multiset<T> **m) { 24 return traits_asptr_stdseq<std::multiset<T> >::asptr(obj, m); 25 } 26 }; 27 28 template <class T> 29 struct traits_from<std::multiset<T> > { 30 static VALUE from(const std::multiset<T>& vec) { 31 return traits_from_stdseq<std::multiset<T> >::from(vec); 32 } 33 }; 34 } 35 %} 36 37 #define %swig_multiset_methods(Set...) %swig_set_methods(Set) 38 39 40 41 %rename("delete") std::multiset::__delete__; 42 %rename("reject!") std::multiset::reject_bang; 43 %rename("map!") std::multiset::map_bang; 44 %rename("empty?") std::multiset::empty; 45 %rename("include?" ) std::multiset::__contains__ const; 46 %rename("has_key?" ) std::multiset::has_key const; 47 48 %alias std::multiset::push "<<"; 49 50 %include <std/std_multiset.i> 51