* add support for GSList* fields to MuMsgDoc and MuMsgFile

This commit is contained in:
Dirk-Jan C. Binnema
2011-06-15 23:50:17 +03:00
parent 1e629e45c7
commit 663895f968
4 changed files with 89 additions and 45 deletions

View File

@ -26,6 +26,7 @@
#include "mu-util.h"
#include "mu-msg-fields.h"
#include "mu-msg-doc.h"
#include "mu-str.h"
struct _MuMsgDoc {
_MuMsgDoc (const Xapian::Document& doc) : _doc (doc) {}
@ -76,6 +77,27 @@ mu_msg_doc_get_str_field (MuMsgDoc *self, MuMsgFieldId mfid, gboolean *do_free)
}
GSList*
mu_msg_doc_get_str_list_field (MuMsgDoc *self, MuMsgFieldId mfid,
gboolean *do_free)
{
g_return_val_if_fail (self, NULL);
g_return_val_if_fail (mu_msg_field_id_is_valid(mfid), NULL);
g_return_val_if_fail (mu_msg_field_is_string_list(mfid), NULL);
*do_free = TRUE;
try {
/* return a comma-separated string as a GSList */
const std::string s (self->doc().get_value(mfid));
return s.empty() ? NULL : mu_str_to_list(s.c_str(),',');
} MU_XAPIAN_CATCH_BLOCK_RETURN(NULL);
}
gint64
mu_msg_doc_get_num_field (MuMsgDoc *self, MuMsgFieldId mfid)
{