/*
* call-seq:
* term_doc_enum.each_position {|pos| do_something } -> term_doc_enum
*
* Iterate through each of the positions occupied by the current term in the
* current document. This can only be called once per document. It can be
* used within the each method. For example, to print the terms documents and
* positions;
*
* tde.each do |doc_id, freq|
* puts "term appeared #{freq} times in document #{doc_id}:"
* positions = []
* tde.each_position {|pos| positions << pos}
* puts " #{positions.join(', ')}"
* end
*/
static VALUE
frt_tde_each_position(VALUE self)
{
TermDocEnum *tde = (TermDocEnum *)DATA_PTR(self);
int pos;
if (tde->next_position == NULL) {
rb_raise(rb_eNotImpError, "to scan through positions you must create "
"the TermDocEnum with Index#term_positions method rather "
"than the Index#term_docs method");
}
while (0 <= (pos = tde->next_position(tde))) {
rb_yield(INT2FIX(pos));
}
return self;
}