diff --git a/src/mu-msg-fields.h b/src/mu-msg-fields.h index 4025bf34..028a9559 100644 --- a/src/mu-msg-fields.h +++ b/src/mu-msg-fields.h @@ -41,6 +41,7 @@ enum _MuMsgFieldId { MU_MSG_FIELD_ID_TO, MU_MSG_FIELD_ID_MSGID, MU_MSG_FIELD_ID_TIMESTAMP, + MU_MSG_FIELD_ID_NUM, /* fake fields */ diff --git a/src/mu-msg-iter.cc b/src/mu-msg-iter.cc index b158e716..02d782ea 100644 --- a/src/mu-msg-iter.cc +++ b/src/mu-msg-iter.cc @@ -31,8 +31,7 @@ struct _MuMsgIter { Xapian::Enquire *_enq; Xapian::MSet _matches; Xapian::MSet::const_iterator _cursor; - size_t _batchsize; - size_t _offset; + size_t _batchsize, _offset; char* _str[MU_MSG_FIELD_ID_NUM]; bool _is_null; }; @@ -212,6 +211,16 @@ mu_msg_iter_get_field_numeric (MuMsgIter *iter, MuMsgFieldId mfid) } MU_XAPIAN_CATCH_BLOCK_RETURN(static_cast(-1)); } + +unsigned int +mu_msg_iter_get_index (MuMsgIter *iter) +{ + g_return_val_if_fail (iter, (unsigned int)-1); + + return iter->_offset; +} + + /* hmmm.... is it impossible to get a 0 docid, or just very improbable? */ unsigned int mu_msg_iter_get_docid (MuMsgIter *iter) diff --git a/src/mu-msg-iter.h b/src/mu-msg-iter.h index ace76f0d..7c2d9bb9 100644 --- a/src/mu-msg-iter.h +++ b/src/mu-msg-iter.h @@ -87,6 +87,20 @@ MuMsg* mu_msg_iter_get_msg (MuMsgIter *iter, GError **err) unsigned int mu_msg_iter_get_docid (MuMsgIter *iter); + +/** + * get the index for this iterator (ie. somewhere between [0..n-1], + * with being the number of matches, and increasing 1 for each + * iter_next) + * + * @param iter a valid MuMsgIter + * + * @return the index or (unsigned int)-1 in case of error + + */ +unsigned int mu_msg_iter_get_index (MuMsgIter *iter); + + /** * get the full path of the message file *