static VALUE rb_set_union(VALUE set, SEL sel, VALUE other) { VALUE new_set = rb_set_dup(set, 0); rb_set_merge(new_set, 0, other); return new_set; }
static VALUE rb_set_clone(VALUE rcv) { VALUE clone = rb_set_dup(rcv); if (OBJ_FROZEN(rcv)) OBJ_FREEZE(clone); return clone; }
static VALUE rb_set_union(VALUE set, VALUE other) { VALUE new_set = rb_set_dup(set); CFSetApplyFunction((CFMutableSetRef)other, rb_set_union_callback, (void *)new_set); return new_set; }
static VALUE rb_set_clone(VALUE rcv, SEL sel) { VALUE clone = rb_set_dup(rcv, 0); if (OBJ_FROZEN(rcv)) { OBJ_FREEZE(clone); } return clone; }
static VALUE rb_set_subtract(VALUE set, SEL sel, VALUE other) { VALUE new_set = rb_set_dup(set, 0); CFMutableSetRef sets[2] = { (CFMutableSetRef)other, (CFMutableSetRef)new_set }; CFSetApplyFunction((CFMutableSetRef)set, rb_set_subtract_callback, sets); return new_set; }
static VALUE rb_set_reject_bang(VALUE set, SEL sel) { rb_set_modify_check(set); VALUE new_set = rb_set_dup(set, 0); VALUE acted = Qfalse; VALUE context[2] = { set, (VALUE)&acted }; CFSetApplyFunction((CFMutableSetRef)new_set, rb_set_delete_if_callback, (void *)context); return acted == Qtrue ? set : Qnil ; }
static VALUE rb_set_delete_if(VALUE set) { rb_set_modify_check(set); VALUE new_set = rb_set_dup(set); VALUE acted = Qfalse; VALUE context[2] = { set, (VALUE)&acted }; CFSetApplyFunction((CFMutableSetRef)new_set, rb_set_delete_if_callback, (void *)context); return set; }