    /*
     *  call-seq:
     *     term_doc_enum.each {|doc_id, freq| do_something() } -> doc_count
     *
     *  Iterate through the documents and document frequencies in the
     *  +term_doc_enum+.
     *
     *  NOTE: this method can only be called once after each seek. If you need to
     *  call +#each+ again then you should call +#seek+ again too.
     */
    static VALUE
    frt_tde_each(VALUE self)
    {
        int doc_cnt = 0;
        TermDocEnum *tde = (TermDocEnum *)DATA_PTR(self);
        VALUE vals = rb_ary_new2(2);
        RARRAY(vals)->len = 2;
        rb_mem_clear(RARRAY(vals)->ptr, 2);

        while (tde->next(tde)) {
            doc_cnt++;
            RARRAY(vals)->ptr[0] = INT2FIX(tde->doc_num(tde));
            RARRAY(vals)->ptr[1] = INT2FIX(tde->freq(tde));
            rb_yield(vals);

        }
        return INT2FIX(doc_cnt);
    }