From 4f93f7cc052288542d214fe877b5488f153d8cbd Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Sat, 19 Mar 2011 10:11:13 +0200 Subject: [PATCH] * add mu_msg_iter_get_index, to get the sequence number of the iterator --- src/mu-msg-fields.h | 1 + src/mu-msg-iter.cc | 13 +++++++++++-- src/mu-msg-iter.h | 14 ++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) 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 *