/
usr
/
share
/
swig
/
3.0.12
/
ruby
/
/usr/share/swig/3.0.12/ruby
mkdir
upload
Name
Size
Mode
Actions
argcargv.i
1227
0644
edit
dl
rm
attribute.i
34
0644
edit
dl
rm
boost_shared_ptr.i
16293
0644
edit
dl
rm
carrays.i
129
0644
edit
dl
rm
cdata.i
30
0644
edit
dl
rm
cmalloc.i
32
0644
edit
dl
rm
cni.i
42
0644
edit
dl
rm
cpointer.i
33
0644
edit
dl
rm
cstring.i
32
0644
edit
dl
rm
director.swg
8198
0644
edit
dl
rm
embed.i
169
0644
edit
dl
rm
exception.i
126
0644
edit
dl
rm
extconf.rb
234
0644
edit
dl
rm
factory.i
32
0644
edit
dl
rm
file.i
642
0644
edit
dl
rm
jstring.i
952
0644
edit
dl
rm
Makefile.swig
942
0644
edit
dl
rm
progargcargv.i
770
0644
edit
dl
rm
ruby.swg
2653
0644
edit
dl
rm
rubyapi.swg
801
0644
edit
dl
rm
rubyautodoc.swg
4367
0644
edit
dl
rm
rubyclasses.swg
11384
0644
edit
dl
rm
rubycomplex.swg
3860
0644
edit
dl
rm
rubycontainer.swg
28953
0644
edit
dl
rm
rubycontainer_extended.swg
3540
0644
edit
dl
rm
rubydef.swg
42
0644
edit
dl
rm
rubyerrors.swg
3714
0644
edit
dl
rm
rubyfragments.swg
552
0644
edit
dl
rm
rubyhead.swg
4281
0644
edit
dl
rm
rubyinit.swg
39
0644
edit
dl
rm
rubyiterators.swg
22823
0644
edit
dl
rm
rubykw.swg
1177
0644
edit
dl
rm
rubymacros.swg
456
0644
edit
dl
rm
rubyopers.swg
1852
0644
edit
dl
rm
rubyprimtypes.swg
5461
0644
edit
dl
rm
rubyrun.swg
13938
0644
edit
dl
rm
rubyruntime.swg
423
0644
edit
dl
rm
rubystdautodoc.swg
1819
0644
edit
dl
rm
rubystdcommon.swg
5207
0644
edit
dl
rm
rubystdfunctors.swg
4057
0644
edit
dl
rm
rubystrings.swg
1569
0644
edit
dl
rm
rubytracking.swg
4448
0644
edit
dl
rm
rubytypemaps.swg
1808
0644
edit
dl
rm
rubyuserdir.swg
657
0644
edit
dl
rm
rubywstrings.swg
2527
0644
edit
dl
rm
std_alloc.i
27
0644
edit
dl
rm
std_array.i
3533
0644
edit
dl
rm
std_basic_string.i
2640
0644
edit
dl
rm
std_char_traits.i
33
0644
edit
dl
rm
std_common.i
2334
0644
edit
dl
rm
std_complex.i
471
0644
edit
dl
rm
std_container.i
60
0644
edit
dl
rm
std_deque.i
732
0644
edit
dl
rm
std_except.i
35
0644
edit
dl
rm
std_functors.i
768
0644
edit
dl
rm
std_ios.i
380
0644
edit
dl
rm
std_iostream.i
227
0644
edit
dl
rm
std_list.i
1037
0644
edit
dl
rm
std_map.i
11322
0644
edit
dl
rm
std_multimap.i
6085
0644
edit
dl
rm
std_multiset.i
1403
0644
edit
dl
rm
std_pair.i
5535
0644
edit
dl
rm
std_queue.i
851
0644
edit
dl
rm
std_set.i
6531
0644
edit
dl
rm
std_shared_ptr.i
68
0644
edit
dl
rm
std_sstream.i
30
0644
edit
dl
rm
std_stack.i
853
0644
edit
dl
rm
std_streambuf.i
31
0644
edit
dl
rm
std_string.i
190
0644
edit
dl
rm
std_vector.i
1218
0644
edit
dl
rm
std_vectora.i
950
0644
edit
dl
rm
std_wstring.i
65
0644
edit
dl
rm
stl.i
357
0644
edit
dl
rm
timeval.i
1180
0644
edit
dl
rm
typemaps.i
11314
0644
edit
dl
rm
Edit:
/usr/share/swig/3.0.12/ruby/std_map.i
(11322B)
// // Maps // %fragment("StdMapCommonTraits","header",fragment="StdSequenceTraits") { namespace swig { template <class ValueType> struct from_key_oper { typedef const ValueType& argument_type; typedef VALUE result_type; result_type operator()(argument_type v) const { return swig::from(v.first); } }; template <class ValueType> struct from_value_oper { typedef const ValueType& argument_type; typedef VALUE result_type; result_type operator()(argument_type v) const { return swig::from(v.second); } }; template<class OutIterator, class FromOper, class ValueType = typename OutIterator::value_type> struct MapIterator_T : ConstIteratorClosed_T<OutIterator, ValueType, FromOper> { MapIterator_T(OutIterator curr, OutIterator first, OutIterator last, VALUE seq) : ConstIteratorClosed_T<OutIterator,ValueType,FromOper>(curr, first, last, seq) { } }; template<class OutIterator, class FromOper = from_key_oper<typename OutIterator::value_type> > struct MapKeyIterator_T : MapIterator_T<OutIterator, FromOper> { MapKeyIterator_T(OutIterator curr, OutIterator first, OutIterator last, VALUE seq) : MapIterator_T<OutIterator, FromOper>(curr, first, last, seq) { } }; template<typename OutIter> inline ConstIterator* make_output_key_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, VALUE seq = 0) { return new MapKeyIterator_T<OutIter>(current, begin, end, seq); } template<class OutIterator, class FromOper = from_value_oper<typename OutIterator::value_type> > struct MapValueIterator_T : MapIterator_T<OutIterator, FromOper> { MapValueIterator_T(OutIterator curr, OutIterator first, OutIterator last, VALUE seq) : MapIterator_T<OutIterator, FromOper>(curr, first, last, seq) { } }; template<typename OutIter> inline ConstIterator* make_output_value_iterator(const OutIter& current, const OutIter& begin, const OutIter& end, VALUE seq = 0) { return new MapValueIterator_T<OutIter>(current, begin, end, seq); } } } %fragment("StdMapTraits","header",fragment="StdMapCommonTraits") { namespace swig { template <class RubySeq, class K, class T > inline void assign(const RubySeq& rubyseq, std::map<K,T > *map) { typedef typename std::map<K,T>::value_type value_type; typename RubySeq::const_iterator it = rubyseq.begin(); for (;it != rubyseq.end(); ++it) { map->insert(value_type(it->first, it->second)); } } template <class K, class T> struct traits_asptr<std::map<K,T> > { typedef std::map<K,T> map_type; static int asptr(VALUE obj, map_type **val) { int res = SWIG_ERROR; if ( TYPE(obj) == T_HASH ) { static ID id_to_a = rb_intern("to_a"); VALUE items = rb_funcall(obj, id_to_a, 0); res = traits_asptr_stdseq<std::map<K,T>, std::pair<K, T> >::asptr(items, val); } else { map_type *p; swig_type_info *descriptor = swig::type_info<map_type>(); res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR; if (SWIG_IsOK(res) && val) *val = p; } return res; } }; template <class K, class T > struct traits_from<std::map<K,T> > { typedef std::map<K,T> map_type; typedef typename map_type::const_iterator const_iterator; typedef typename map_type::size_type size_type; static VALUE from(const map_type& map) { swig_type_info *desc = swig::type_info<map_type>(); if (desc && desc->clientdata) { return SWIG_NewPointerObj(new map_type(map), desc, SWIG_POINTER_OWN); } else { size_type size = map.size(); int rubysize = (size <= (size_type) INT_MAX) ? (int) size : -1; if (rubysize < 0) { SWIG_RUBY_THREAD_BEGIN_BLOCK; rb_raise( rb_eRuntimeError, "map size not valid in Ruby"); SWIG_RUBY_THREAD_END_BLOCK; return Qnil; } VALUE obj = rb_hash_new(); for (const_iterator i= map.begin(); i!= map.end(); ++i) { VALUE key = swig::from(i->first); VALUE val = swig::from(i->second); rb_hash_aset(obj, key, val); } return obj; } } }; } } %define %swig_map_common(Map...) %swig_container_methods(%arg(Map)); // %swig_sequence_iterator(%arg(Map)); %extend { VALUE __delete__(const key_type& key) { Map::iterator i = self->find(key); if (i != self->end()) { self->erase(i); return swig::from( key ); } else { return Qnil; } } bool has_key(const key_type& key) const { Map::const_iterator i = self->find(key); return i != self->end(); } VALUE keys() { Map::size_type size = self->size(); int rubysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; if (rubysize < 0) { SWIG_RUBY_THREAD_BEGIN_BLOCK; rb_raise(rb_eRuntimeError, "map size not valid in Ruby"); SWIG_RUBY_THREAD_END_BLOCK; return Qnil; } VALUE ary = rb_ary_new2(rubysize); Map::const_iterator i = self->begin(); Map::const_iterator e = self->end(); for ( ; i != e; ++i ) { rb_ary_push( ary, swig::from(i->first) ); } return ary; } Map* each() { if ( !rb_block_given_p() ) rb_raise( rb_eArgError, "no block given"); VALUE k, v; Map::iterator i = self->begin(); Map::iterator e = self->end(); for ( ; i != e; ++i ) { const Map::key_type& key = i->first; const Map::mapped_type& val = i->second; k = swig::from<Map::key_type>(key); v = swig::from<Map::mapped_type>(val); rb_yield_values(2, k, v); } return self; } %newobject select; Map* select() { if ( !rb_block_given_p() ) rb_raise( rb_eArgError, "no block given" ); Map* r = new Map; Map::iterator i = $self->begin(); Map::iterator e = $self->end(); for ( ; i != e; ++i ) { VALUE k = swig::from<Map::key_type>(i->first); VALUE v = swig::from<Map::mapped_type>(i->second); if ( RTEST( rb_yield_values(2, k, v) ) ) $self->insert(r->end(), *i); } return r; } %typemap(in) (int argc, VALUE* argv) { $1 = argc; $2 = argv; } VALUE values_at(int argc, VALUE* argv, ...) { VALUE r = rb_ary_new(); ID id = rb_intern("[]"); swig_type_info* type = swig::type_info< Map >(); VALUE me = SWIG_NewPointerObj( $self, type, 0 ); for ( int i = 0; i < argc; ++i ) { VALUE key = argv[i]; VALUE tmp = rb_funcall( me, id, 1, key ); rb_ary_push( r, tmp ); } return r; } Map* each_key() { if ( !rb_block_given_p() ) rb_raise( rb_eArgError, "no block given"); VALUE r; Map::iterator i = self->begin(); Map::iterator e = self->end(); for ( ; i != e; ++i ) { r = swig::from( i->first ); rb_yield(r); } return self; } VALUE values() { Map::size_type size = self->size(); int rubysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; if (rubysize < 0) { SWIG_RUBY_THREAD_BEGIN_BLOCK; rb_raise(rb_eRuntimeError, "map size not valid in Ruby"); SWIG_RUBY_THREAD_END_BLOCK; return Qnil; } VALUE ary = rb_ary_new2(rubysize); Map::const_iterator i = self->begin(); Map::const_iterator e = self->end(); for ( ; i != e; ++i ) { rb_ary_push( ary, swig::from(i->second) ); } return ary; } Map* each_value() { if ( !rb_block_given_p() ) rb_raise( rb_eArgError, "no block given"); VALUE r; Map::iterator i = self->begin(); Map::iterator e = self->end(); for ( ; i != e; ++i ) { r = swig::from( i->second ); rb_yield(r); } return self; } VALUE entries() { Map::size_type size = self->size(); int rubysize = (size <= (Map::size_type) INT_MAX) ? (int) size : -1; if (rubysize < 0) { SWIG_RUBY_THREAD_BEGIN_BLOCK; rb_raise(rb_eRuntimeError, "map size not valid in Ruby"); SWIG_RUBY_THREAD_END_BLOCK; return Qnil; } VALUE ary = rb_ary_new2(rubysize); Map::const_iterator i = self->begin(); Map::const_iterator e = self->end(); for ( ; i != e; ++i ) { rb_ary_push( ary, swig::from<std::pair<Map::key_type, Map::mapped_type> >(*i) ); } return ary; } bool __contains__(const key_type& key) { return self->find(key) != self->end(); } %newobject key_iterator(VALUE *RUBY_SELF); swig::ConstIterator* key_iterator(VALUE *RUBY_SELF) { return swig::make_output_key_iterator($self->begin(), $self->begin(), $self->end(), *RUBY_SELF); } %newobject value_iterator(VALUE *RUBY_SELF); swig::ConstIterator* value_iterator(VALUE *RUBY_SELF) { return swig::make_output_value_iterator($self->begin(), $self->begin(), $self->end(), *RUBY_SELF); } } %enddef %define %swig_map_methods(Map...) %swig_map_common(Map) %extend { VALUE __getitem__(const key_type& key) const { Map::const_iterator i = self->find(key); if ( i != self->end() ) return swig::from<Map::mapped_type>( i->second ); else return Qnil; } void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) { (*self)[key] = x; } VALUE inspect() { Map::const_iterator i = $self->begin(); Map::const_iterator e = $self->end(); const char *type_name = swig::type_name< Map >(); VALUE str = rb_str_new2( type_name ); str = rb_str_cat2( str, " {" ); bool comma = false; VALUE tmp; for ( ; i != e; ++i, comma = true ) { if (comma) str = rb_str_cat2( str, "," ); tmp = swig::from< Map::key_type >( i->first ); tmp = rb_inspect( tmp ); str = rb_str_buf_append( str, tmp ); str = rb_str_cat2( str, "=>" ); tmp = swig::from< Map::mapped_type >( i->second ); tmp = rb_inspect( tmp ); str = rb_str_buf_append( str, tmp ); } str = rb_str_cat2( str, "}" ); return str; } VALUE to_a() { Map::const_iterator i = $self->begin(); Map::const_iterator e = $self->end(); VALUE ary = rb_ary_new2( std::distance( i, e ) ); VALUE tmp; for ( ; i != e; ++i ) { // @todo: improve -- this should just be swig::from(*i) tmp = swig::from< std::pair<Map::key_type, Map::mapped_type> >( *i ); rb_ary_push( ary, tmp ); } return ary; } VALUE to_s() { Map::iterator i = $self->begin(); Map::iterator e = $self->end(); VALUE str = rb_str_new2( "" ); VALUE tmp; for ( ; i != e; ++i ) { // @todo: improve -- this should just be swig::from(*i) tmp = swig::from< std::pair<Map::key_type, Map::mapped_type> >( *i ); tmp = rb_obj_as_string( tmp ); str = rb_str_buf_append( str, tmp ); } return str; } } %enddef %mixin std::map "Enumerable"; %rename("delete") std::map::__delete__; %rename("reject!") std::map::reject_bang; %rename("map!") std::map::map_bang; %rename("empty?") std::map::empty; %rename("include?" ) std::map::__contains__ const; %rename("has_key?" ) std::map::has_key const; %alias std::map::push "<<"; %include <std/std_map.i>
Save
cmd:
run