* mu-msg-iter: add mu_msg_iter_get_msgid and mu_msg_iter_get_refs

This commit is contained in:
djcb 2012-12-24 14:59:48 +02:00
parent 836c932f2a
commit f366c0f680
2 changed files with 60 additions and 1 deletions

View File

@ -137,6 +137,7 @@ public:
}
}
bool skip_dups () const { return _skip_dups; }
bool skip_unreadable () const { return _skip_unreadable; }
@ -300,12 +301,43 @@ mu_msg_iter_is_done (MuMsgIter *iter)
unsigned int
mu_msg_iter_get_docid (MuMsgIter *iter)
{
g_return_val_if_fail (iter, (unsigned int)-1);
g_return_val_if_fail (!mu_msg_iter_is_done(iter),
(unsigned int)-1);
try {
return iter->cursor().get_document().get_docid();
} MU_XAPIAN_CATCH_BLOCK_RETURN (0);
} MU_XAPIAN_CATCH_BLOCK_RETURN ((unsigned int)-1);
}
const char*
mu_msg_iter_get_msgid (MuMsgIter *iter)
{
g_return_val_if_fail (iter, NULL);
g_return_val_if_fail (!mu_msg_iter_is_done(iter), NULL);
try {
return iter->cursor().get_document().get_value(MU_MSG_FIELD_ID_MSGID).c_str();
} MU_XAPIAN_CATCH_BLOCK_RETURN (NULL);
}
char**
mu_msg_iter_get_refs (MuMsgIter *iter)
{
g_return_val_if_fail (iter, NULL);
g_return_val_if_fail (!mu_msg_iter_is_done(iter), NULL);
try {
std::string refs (
iter->cursor().get_document().get_value(MU_MSG_FIELD_ID_REFS));
if (refs.empty())
return NULL;
return g_strsplit (refs.c_str(),",", -1);
} MU_XAPIAN_CATCH_BLOCK_RETURN (NULL);
}

View File

@ -177,6 +177,33 @@ typedef struct _MuMsgIterThreadInfo MuMsgIterThreadInfo;
*/
const MuMsgIterThreadInfo* mu_msg_iter_get_thread_info (MuMsgIter *iter);
/**
* get a the message-id for this message
*
* @param iter a valid MuMsgIter iterator
*
* @return the message-id; this only stays valid as long as the
* current iter stays valid.
*/
const char* mu_msg_iter_get_msgid (MuMsgIter *iter);
/**
* get the list of references for this messages as a NULL-terminated
* string array
*
* @param iter a valid MuMsgIter iterator
*
* @return a NULL-terminated string array. free with g_strfreev when
* it's no longer needed.
*/
char** mu_msg_iter_get_refs (MuMsgIter *iter);
/* FIXME */
const char* mu_msg_iter_get_path (MuMsgIter *iter);