Skip to content

Commit

Permalink
add the implementation of NSDictionary#select!
Browse files Browse the repository at this point in the history
  • Loading branch information
Watson1978 committed Jul 6, 2012
1 parent 13d23d3 commit e50c757
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions NSDictionary.m
Expand Up @@ -354,6 +354,20 @@
return (VALUE)rcv;
}

static VALUE
nshash_select_bang(id rcv, SEL sel)
{
CHECK_MUTABLE(rcv);
RETURN_ENUMERATOR(rcv, 0, 0);
const long n = [rcv count];

keep_if(rcv);
if (n == [rcv count]) {
return Qnil;
}
return (VALUE)rcv;
}

static VALUE
nshash_keep_if(id rcv, SEL sel)
{
Expand Down Expand Up @@ -531,6 +545,7 @@
rb_objc_define_method(rb_cHash, "delete_if", nshash_delete_if, 0);
rb_objc_define_method(rb_cHash, "keep_if", nshash_keep_if, 0);
rb_objc_define_method(rb_cHash, "select", nshash_select, 0);
rb_objc_define_method(rb_cHash, "select!", nshash_select_bang, 0);
rb_objc_define_method(rb_cHash, "reject", nshash_reject, 0);
rb_objc_define_method(rb_cHash, "reject!", nshash_reject_bang, 0);
rb_objc_define_method(rb_cHash, "clear", nshash_clear, 0);
Expand Down

0 comments on commit e50c757

Please sign in to comment.