Added proper each(), printing and other methods to map

and multimap.




git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9733 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Gonzalo Garramuno 2007-05-01 05:43:30 +00:00
commit c0a7c7e081
5 changed files with 104 additions and 50 deletions

View file

@ -656,7 +656,23 @@ namespace swig
swig::yield< Sequence::value_type >() );
return r;
}
Sequence* each()
{
if ( !rb_block_given_p() )
rb_raise( rb_eArgError, "no block given");
VALUE r;
Sequence::iterator i = self->begin();
Sequence::iterator e = self->end();
for ( ; i != e; ++i )
{
r = swig::from<Sequence::value_type>(*i);
rb_yield(r);
}
return self;
}
%rename("reject!") reject_bang;
%alias reject_bang "delete_if";
@ -692,41 +708,6 @@ namespace swig
return r;
}
Sequence* each_with_index()
{
if ( !rb_block_given_p() )
rb_raise( rb_eArgError, "no block given");
VALUE r, idx;
Sequence::iterator i = self->begin();
Sequence::iterator e = self->end();
unsigned c = 0;
for ( ; i != e; ++i, ++c )
{
r = swig::from<Sequence::value_type>(*i);
idx = UINT2NUM( c );
rb_yield_values(2, r, idx);
}
return self;
}
Sequence* each()
{
if ( !rb_block_given_p() )
rb_raise( rb_eArgError, "no block given");
VALUE r;
Sequence::iterator i = self->begin();
Sequence::iterator e = self->end();
for ( ; i != e; ++i )
{
r = swig::from<Sequence::value_type>(*i);
rb_yield(r);
}
return self;
}
}
%enddef