mirror of https://github.com/djcb/mu.git
* mu-msg-field: add support for maildir field; more clear separate
index/term/value for xapian
This commit is contained in:
parent
b77004774c
commit
8f825b4816
|
@ -21,9 +21,10 @@
|
|||
#include "mu-msg-fields.h"
|
||||
|
||||
enum _FieldFlags {
|
||||
FLAG_XAPIAN = 1 << 1, /* field stored as a string in xapian db */
|
||||
FLAG_GMIME = 1 << 2, /* field retrieved by through gmime */
|
||||
FLAG_XAPIAN_INDEX = 1 << 3 /* field is indexed in xapian */
|
||||
FLAG_GMIME = 1 << 1, /* field retrieved through gmime */
|
||||
FLAG_XAPIAN_INDEX = 1 << 2, /* field is indexed in xapian */
|
||||
FLAG_XAPIAN_TERM = 1 << 3, /* field stored as term in xapian */
|
||||
FLAG_XAPIAN_VALUE = 1 << 4 /* field stored as value in xapian */
|
||||
};
|
||||
typedef enum _FieldFlags FieldFlags;
|
||||
|
||||
|
@ -41,7 +42,6 @@ struct _MuMsgField {
|
|||
|
||||
|
||||
static const MuMsgField FIELD_DATA[] = {
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_BODY_TEXT,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
|
@ -60,42 +60,49 @@ static const MuMsgField FIELD_DATA[] = {
|
|||
MU_MSG_FIELD_ID_CC,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
"cc", "c", "C",
|
||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
||||
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_DATE,
|
||||
MU_MSG_FIELD_TYPE_TIME_T,
|
||||
"date", "d", "D",
|
||||
FLAG_XAPIAN | FLAG_GMIME
|
||||
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_FLAGS,
|
||||
MU_MSG_FIELD_TYPE_INT,
|
||||
"flags", "F", "G",
|
||||
FLAG_XAPIAN | FLAG_GMIME
|
||||
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_FROM,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
"from", "f", "F",
|
||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
||||
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_PATH,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
"path", "p", "P",
|
||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
||||
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_MAILDIR,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
"maildir", "m", "M",
|
||||
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_PRIORITY,
|
||||
MU_MSG_FIELD_TYPE_INT,
|
||||
"prio", "P", "I",
|
||||
FLAG_GMIME | FLAG_XAPIAN
|
||||
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -105,25 +112,25 @@ static const MuMsgField FIELD_DATA[] = {
|
|||
FLAG_GMIME
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_SUBJECT,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
"subject", "s", "S",
|
||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
||||
},
|
||||
{
|
||||
MU_MSG_FIELD_ID_SUBJECT,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
"subject", "s", "S",
|
||||
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_TO,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
"to", "t", "T",
|
||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
||||
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE
|
||||
},
|
||||
|
||||
{
|
||||
MU_MSG_FIELD_ID_MSGID,
|
||||
MU_MSG_FIELD_TYPE_STRING,
|
||||
"msgid", "m", "M",
|
||||
FLAG_GMIME | FLAG_XAPIAN
|
||||
"msgid", "i", "I",
|
||||
FLAG_GMIME | FLAG_XAPIAN_TERM
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -197,15 +204,7 @@ mu_msg_field_from_id (MuMsgFieldId id)
|
|||
|
||||
|
||||
gboolean
|
||||
mu_msg_field_is_xapian_enabled (const MuMsgField *field)
|
||||
{
|
||||
g_return_val_if_fail (field, FALSE);
|
||||
return field->_flags & (FLAG_XAPIAN|FLAG_XAPIAN_INDEX);
|
||||
}
|
||||
|
||||
|
||||
gboolean
|
||||
mu_msg_field_is_gmime_enabled (const MuMsgField *field)
|
||||
mu_msg_field_gmime (const MuMsgField *field)
|
||||
{
|
||||
g_return_val_if_fail (field, FALSE);
|
||||
return field->_flags & FLAG_GMIME;
|
||||
|
@ -213,12 +212,28 @@ mu_msg_field_is_gmime_enabled (const MuMsgField *field)
|
|||
|
||||
|
||||
gboolean
|
||||
mu_msg_field_is_xapian_indexable (const MuMsgField *field)
|
||||
mu_msg_field_xapian_index (const MuMsgField *field)
|
||||
{
|
||||
g_return_val_if_fail (field, FALSE);
|
||||
return field->_flags & FLAG_XAPIAN_INDEX;
|
||||
}
|
||||
|
||||
gboolean
|
||||
mu_msg_field_xapian_value (const MuMsgField *field)
|
||||
{
|
||||
g_return_val_if_fail (field, FALSE);
|
||||
return field->_flags & FLAG_XAPIAN_VALUE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
mu_msg_field_xapian_term (const MuMsgField *field)
|
||||
{
|
||||
g_return_val_if_fail (field, FALSE);
|
||||
return field->_flags & FLAG_XAPIAN_TERM;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
gboolean
|
||||
mu_msg_field_is_numeric (const MuMsgField *field)
|
||||
|
|
|
@ -33,6 +33,7 @@ enum _MuMsgFieldId {
|
|||
MU_MSG_FIELD_ID_FLAGS,
|
||||
MU_MSG_FIELD_ID_FROM,
|
||||
MU_MSG_FIELD_ID_PATH,
|
||||
MU_MSG_FIELD_ID_MAILDIR,
|
||||
MU_MSG_FIELD_ID_PRIORITY,
|
||||
MU_MSG_FIELD_ID_SIZE,
|
||||
MU_MSG_FIELD_ID_SUBJECT,
|
||||
|
@ -136,15 +137,6 @@ MuMsgFieldType mu_msg_field_type (const MuMsgField *field) G_GNUC_CONST;
|
|||
*/
|
||||
gboolean mu_msg_field_is_numeric (const MuMsgField *field) G_GNUC_CONST;
|
||||
|
||||
/**
|
||||
\ * is the field Xapian-enabled? That is, should this field be stored
|
||||
* (as a string) in the Xapian database?
|
||||
*
|
||||
* @param field a MuMsgField
|
||||
*
|
||||
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
||||
*/
|
||||
gboolean mu_msg_field_is_xapian_enabled (const MuMsgField *field) G_GNUC_PURE;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -156,7 +148,25 @@ gboolean mu_msg_field_is_xapian_enabled (const MuMsgField *field) G_GNUC_PURE;
|
|||
*
|
||||
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
||||
*/
|
||||
gboolean mu_msg_field_is_xapian_indexable (const MuMsgField *field) G_GNUC_PURE;
|
||||
gboolean mu_msg_field_xapian_index (const MuMsgField *field) G_GNUC_PURE;
|
||||
|
||||
/**
|
||||
* should this field be stored as a xapian term?
|
||||
*
|
||||
* @param field a MuMsgField
|
||||
*
|
||||
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
||||
*/
|
||||
gboolean mu_msg_field_xapian_term (const MuMsgField *field) G_GNUC_PURE;
|
||||
|
||||
/**
|
||||
* should this field be stored as a xapian value?
|
||||
*
|
||||
* @param field a MuMsgField
|
||||
*
|
||||
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
||||
*/
|
||||
gboolean mu_msg_field_xapian_value (const MuMsgField *field) G_GNUC_PURE;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -167,7 +177,7 @@ gboolean mu_msg_field_is_xapian_indexable (const MuMsgField *field) G_GNUC_PURE;
|
|||
*
|
||||
* @return TRUE if the field is Gmime-enabled, FALSE otherwise
|
||||
*/
|
||||
gboolean mu_msg_field_is_gmime_enabled (const MuMsgField *field) G_GNUC_PURE;
|
||||
gboolean mu_msg_field_gmime (const MuMsgField *field) G_GNUC_PURE;
|
||||
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue