/*
* call-seq:
* term_enum.each {|term, doc_freq| do_something() } -> term_count
*
* Iterates through all the terms in the field, yielding the term and the
* document frequency.
*/
static VALUE
frt_te_each(VALUE self)
{
TermEnum *te = (TermEnum *)DATA_PTR(self);
char *term;
int term_cnt = 0;
VALUE vals = rb_ary_new2(2);
RARRAY(vals)->len = 2;
rb_mem_clear(RARRAY(vals)->ptr, 2);
/* each is being called so there will be no current term */
rb_ivar_set(self, id_term, Qnil);
while (NULL != (term = te->next(te))) {
term_cnt++;
RARRAY(vals)->ptr[0] = rb_str_new(term, te->curr_term_len);
RARRAY(vals)->ptr[1] = INT2FIX(te->curr_ti.doc_freq);
rb_yield(vals);
}
return INT2FIX(term_cnt);
}