/*
* call-seq:
* bv.each { |bit_num| }
*
* Iterate through all the set bits in the bit vector yielding each one in
* order
*/
VALUE
frt_bv_each(VALUE self)
{
BitVector *bv;
int bit;
GET_BV(bv, self);
bv_scan_reset(bv);
if (bv->extends_as_ones) {
while ((bit = bv_scan_next_unset(bv)) >= 0) {
rb_yield(INT2FIX(bit));
}
}
else {
while ((bit = bv_scan_next(bv)) >= 0) {
rb_yield(INT2FIX(bit));
}
}
return self;
}