mirror of https://github.com/djcb/mu.git
* mu-msg-fields.[ch]: reindent, remove MU_MSG_FIELD_ID_SUMMARY
This commit is contained in:
parent
3607459771
commit
81f43467eb
|
@ -29,21 +29,22 @@
|
||||||
* must be in the value (at least when using MuMsgIter)
|
* must be in the value (at least when using MuMsgIter)
|
||||||
*/
|
*/
|
||||||
enum _FieldFlags {
|
enum _FieldFlags {
|
||||||
FLAG_GMIME = 1 << 0, /* field retrieved through
|
FLAG_GMIME = 1 << 0, /* field retrieved through
|
||||||
* gmime */
|
* gmime */
|
||||||
FLAG_XAPIAN_INDEX = 1 << 1, /* field is indexed in
|
FLAG_XAPIAN_INDEX = 1 << 1, /* field is indexed in
|
||||||
* xapian */
|
* xapian */
|
||||||
FLAG_XAPIAN_TERM = 1 << 2, /* field stored as term in
|
FLAG_XAPIAN_TERM = 1 << 2, /* field stored as term in
|
||||||
* xapian */
|
* xapian */
|
||||||
FLAG_XAPIAN_VALUE = 1 << 3, /* field stored as value in
|
FLAG_XAPIAN_VALUE = 1 << 3, /* field stored as value in
|
||||||
* xapian */
|
* xapian */
|
||||||
FLAG_XAPIAN_CONTACT = 1 << 4, /* field contains one or more
|
FLAG_XAPIAN_CONTACT = 1 << 4, /* field contains one or more
|
||||||
* e-mail-addresses */
|
* e-mail-addresses */
|
||||||
FLAG_XAPIAN_ESCAPE = 1 << 5, /* field needs escaping for
|
FLAG_XAPIAN_ESCAPE = 1 << 5, /* field needs escaping for
|
||||||
* xapian */
|
* xapian */
|
||||||
FLAG_NORMALIZE = 1 << 6 /* field needs flattening for
|
FLAG_NORMALIZE = 1 << 6, /* field needs flattening for
|
||||||
* case/accents */
|
* case/accents */
|
||||||
|
FLAG_DONT_CACHE = 1 << 7 /* don't cache this field in
|
||||||
|
* the MuMsg cache */
|
||||||
};
|
};
|
||||||
typedef enum _FieldFlags FieldFlags;
|
typedef enum _FieldFlags FieldFlags;
|
||||||
|
|
||||||
|
@ -51,14 +52,14 @@ typedef enum _FieldFlags FieldFlags;
|
||||||
* this struct describes the fields of an e-mail
|
* this struct describes the fields of an e-mail
|
||||||
/*/
|
/*/
|
||||||
struct _MuMsgField {
|
struct _MuMsgField {
|
||||||
MuMsgFieldId _id; /* the id of the field */
|
MuMsgFieldId _id; /* the id of the field */
|
||||||
MuMsgFieldType _type; /* the type of the field */
|
MuMsgFieldType _type; /* the type of the field */
|
||||||
const char *_name; /* the name of the field */
|
const char *_name; /* the name of the field */
|
||||||
const char _shortcut; /* the shortcut for use in
|
const char _shortcut; /* the shortcut for use in
|
||||||
* --fields and sorting */
|
* --fields and sorting */
|
||||||
const char _xprefix; /* the Xapian-prefix */
|
const char _xprefix; /* the Xapian-prefix */
|
||||||
FieldFlags _flags; /* the flags that tells us
|
FieldFlags _flags; /* the flags that tells us
|
||||||
* what to do */
|
* what to do */
|
||||||
};
|
};
|
||||||
typedef struct _MuMsgField MuMsgField;
|
typedef struct _MuMsgField MuMsgField;
|
||||||
|
|
||||||
|
@ -67,127 +68,121 @@ typedef struct _MuMsgField MuMsgField;
|
||||||
* lowercase */
|
* lowercase */
|
||||||
static const MuMsgField FIELD_DATA[] = {
|
static const MuMsgField FIELD_DATA[] = {
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_BCC,
|
MU_MSG_FIELD_ID_BCC,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"bcc" , 'h', 'H', /* 'hidden */
|
"bcc" , 'h', 'H', /* 'hidden */
|
||||||
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_BODY_TEXT,
|
MU_MSG_FIELD_ID_BODY_TEXT,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"body", 'b', 'B',
|
"body", 'b', 'B',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_NORMALIZE
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_NORMALIZE |
|
||||||
},
|
FLAG_DONT_CACHE
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_BODY_HTML,
|
MU_MSG_FIELD_ID_BODY_HTML,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"bodyhtml", 'h', 0,
|
"bodyhtml", 'h', 0,
|
||||||
FLAG_GMIME
|
FLAG_GMIME | FLAG_DONT_CACHE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_CC,
|
MU_MSG_FIELD_ID_CC,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"cc", 'c', 'C',
|
"cc", 'c', 'C',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_DATE,
|
MU_MSG_FIELD_ID_DATE,
|
||||||
MU_MSG_FIELD_TYPE_TIME_T,
|
MU_MSG_FIELD_TYPE_TIME_T,
|
||||||
"date", 'd', 'D',
|
"date", 'd', 'D',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_FLAGS,
|
MU_MSG_FIELD_ID_FLAGS,
|
||||||
MU_MSG_FIELD_TYPE_INT,
|
MU_MSG_FIELD_TYPE_INT,
|
||||||
"flag", 'g', 'G', /* flaGs */
|
"flag", 'g', 'G', /* flaGs */
|
||||||
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_FROM,
|
MU_MSG_FIELD_ID_FROM,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"from", 'f', 'F',
|
"from", 'f', 'F',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_PATH,
|
MU_MSG_FIELD_ID_PATH,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"path", 'l', 'L', /* 'l' for location */
|
"path", 'l', 'L', /* 'l' for location */
|
||||||
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_MAILDIR,
|
MU_MSG_FIELD_ID_MAILDIR,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"maildir", 'm', 'M',
|
"maildir", 'm', 'M',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
||||||
FLAG_NORMALIZE | FLAG_XAPIAN_ESCAPE
|
FLAG_NORMALIZE | FLAG_XAPIAN_ESCAPE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_PRIO,
|
MU_MSG_FIELD_ID_PRIO,
|
||||||
MU_MSG_FIELD_TYPE_INT,
|
MU_MSG_FIELD_TYPE_INT,
|
||||||
"prio", 'p', 'P',
|
"prio", 'p', 'P',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_SIZE,
|
MU_MSG_FIELD_ID_SIZE,
|
||||||
MU_MSG_FIELD_TYPE_BYTESIZE,
|
MU_MSG_FIELD_TYPE_BYTESIZE,
|
||||||
"size", 'z', 'Z', /* siZe */
|
"size", 'z', 'Z', /* siZe */
|
||||||
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_SUBJECT,
|
MU_MSG_FIELD_ID_SUBJECT,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"subject", 's', 'S',
|
"subject", 's', 'S',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE |
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE |
|
||||||
FLAG_NORMALIZE
|
FLAG_NORMALIZE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_TO,
|
MU_MSG_FIELD_ID_TO,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"to", 't', 'T',
|
"to", 't', 'T',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_MSGID,
|
MU_MSG_FIELD_ID_MSGID,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"msgid", 'i', 'I', /* 'i' for Id */
|
"msgid", 'i', 'I', /* 'i' for Id */
|
||||||
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
||||||
FLAG_XAPIAN_ESCAPE
|
FLAG_XAPIAN_ESCAPE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_TIMESTAMP,
|
MU_MSG_FIELD_ID_TIMESTAMP,
|
||||||
MU_MSG_FIELD_TYPE_TIME_T,
|
MU_MSG_FIELD_TYPE_TIME_T,
|
||||||
"timestamp", 'x', 0,
|
"timestamp", 'x', 0,
|
||||||
FLAG_GMIME
|
FLAG_GMIME
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_REFS,
|
MU_MSG_FIELD_ID_REFS,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"refs", 'r', 'R',
|
"refs", 'r', 'R',
|
||||||
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||||
},
|
}
|
||||||
|
|
||||||
{
|
|
||||||
MU_MSG_FIELD_ID_SUMMARY,
|
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
|
||||||
NULL, 0, 0,
|
|
||||||
FLAG_GMIME
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* the MsgField data in an array, indexed by the MsgFieldId;
|
/* the MsgField data in an array, indexed by the MsgFieldId;
|
||||||
|
@ -196,149 +191,158 @@ static const MuMsgField FIELD_DATA[] = {
|
||||||
static MuMsgField* _msg_field_data[MU_MSG_FIELD_ID_NUM];
|
static MuMsgField* _msg_field_data[MU_MSG_FIELD_ID_NUM];
|
||||||
static const MuMsgField* mu_msg_field (MuMsgFieldId id)
|
static const MuMsgField* mu_msg_field (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
static gboolean _initialized = FALSE;
|
static gboolean _initialized = FALSE;
|
||||||
|
|
||||||
/* initialize the array, but only once... */
|
/* initialize the array, but only once... */
|
||||||
if (G_UNLIKELY(!_initialized)) {
|
if (G_UNLIKELY(!_initialized)) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
||||||
_msg_field_data[FIELD_DATA[i]._id] =
|
_msg_field_data[FIELD_DATA[i]._id] =
|
||||||
(MuMsgField*)&FIELD_DATA[i];
|
(MuMsgField*)&FIELD_DATA[i];
|
||||||
_initialized = TRUE;
|
_initialized = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _msg_field_data[id];
|
return _msg_field_data[id];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
mu_msg_field_foreach (MuMsgFieldForEachFunc func, gconstpointer data)
|
mu_msg_field_foreach (MuMsgFieldForEachFunc func, gconstpointer data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i != MU_MSG_FIELD_ID_NUM; ++i)
|
for (i = 0; i != MU_MSG_FIELD_ID_NUM; ++i)
|
||||||
func (i, data);
|
func (i, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MuMsgFieldId
|
MuMsgFieldId
|
||||||
mu_msg_field_id_from_name (const char* str, gboolean err)
|
mu_msg_field_id_from_name (const char* str, gboolean err)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
g_return_val_if_fail (str, MU_MSG_FIELD_ID_NONE);
|
g_return_val_if_fail (str, MU_MSG_FIELD_ID_NONE);
|
||||||
|
|
||||||
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
||||||
if (g_strcmp0(str, FIELD_DATA[i]._name) == 0)
|
if (g_strcmp0(str, FIELD_DATA[i]._name) == 0)
|
||||||
return FIELD_DATA[i]._id;
|
return FIELD_DATA[i]._id;
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
g_return_val_if_reached (MU_MSG_FIELD_ID_NONE);
|
g_return_val_if_reached (MU_MSG_FIELD_ID_NONE);
|
||||||
|
|
||||||
return MU_MSG_FIELD_ID_NONE;
|
return MU_MSG_FIELD_ID_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MuMsgFieldId
|
MuMsgFieldId
|
||||||
mu_msg_field_id_from_shortcut (char kar, gboolean err)
|
mu_msg_field_id_from_shortcut (char kar, gboolean err)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
||||||
if (kar == FIELD_DATA[i]._shortcut)
|
if (kar == FIELD_DATA[i]._shortcut)
|
||||||
return FIELD_DATA[i]._id;
|
return FIELD_DATA[i]._id;
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
g_return_val_if_reached (MU_MSG_FIELD_ID_NONE);
|
g_return_val_if_reached (MU_MSG_FIELD_ID_NONE);
|
||||||
|
|
||||||
return MU_MSG_FIELD_ID_NONE;
|
return MU_MSG_FIELD_ID_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_gmime (MuMsgFieldId id)
|
mu_msg_field_gmime (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
||||||
return mu_msg_field(id)->_flags & FLAG_GMIME;
|
return mu_msg_field(id)->_flags & FLAG_GMIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_xapian_index (MuMsgFieldId id)
|
mu_msg_field_xapian_index (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
||||||
return mu_msg_field(id)->_flags & FLAG_XAPIAN_INDEX;
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_xapian_value (MuMsgFieldId id)
|
mu_msg_field_xapian_value (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
||||||
return mu_msg_field(id)->_flags & FLAG_XAPIAN_VALUE;
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_xapian_term (MuMsgFieldId id)
|
mu_msg_field_xapian_term (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
||||||
return mu_msg_field(id)->_flags & FLAG_XAPIAN_TERM;
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_TERM;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
mu_msg_field_is_cacheable (MuMsgFieldId id)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
||||||
|
return mu_msg_field(id)->_flags & FLAG_DONT_CACHE ? FALSE : TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_xapian_contact (MuMsgFieldId id)
|
mu_msg_field_xapian_contact (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
||||||
return mu_msg_field(id)->_flags & FLAG_XAPIAN_CONTACT;
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_CONTACT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_normalize (MuMsgFieldId id)
|
mu_msg_field_normalize (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
||||||
return mu_msg_field(id)->_flags & FLAG_NORMALIZE;
|
return mu_msg_field(id)->_flags & FLAG_NORMALIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_xapian_escape (MuMsgFieldId id)
|
mu_msg_field_xapian_escape (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
||||||
return mu_msg_field(id)->_flags & FLAG_XAPIAN_ESCAPE;
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_ESCAPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_is_numeric (MuMsgFieldId mfid)
|
mu_msg_field_is_numeric (MuMsgFieldId mfid)
|
||||||
{
|
{
|
||||||
MuMsgFieldType type;
|
MuMsgFieldType type;
|
||||||
|
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(mfid),FALSE);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(mfid),FALSE);
|
||||||
|
|
||||||
type = mu_msg_field_type (mfid);
|
type = mu_msg_field_type (mfid);
|
||||||
|
|
||||||
return type == MU_MSG_FIELD_TYPE_BYTESIZE ||
|
return type == MU_MSG_FIELD_TYPE_BYTESIZE ||
|
||||||
type == MU_MSG_FIELD_TYPE_TIME_T ||
|
type == MU_MSG_FIELD_TYPE_TIME_T ||
|
||||||
type == MU_MSG_FIELD_TYPE_INT;
|
type == MU_MSG_FIELD_TYPE_INT;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
mu_msg_field_name (MuMsgFieldId id)
|
mu_msg_field_name (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),NULL);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),NULL);
|
||||||
return mu_msg_field(id)->_name;
|
return mu_msg_field(id)->_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
char
|
char
|
||||||
mu_msg_field_shortcut (MuMsgFieldId id)
|
mu_msg_field_shortcut (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),0);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),0);
|
||||||
return mu_msg_field(id)->_shortcut;
|
return mu_msg_field(id)->_shortcut;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char
|
char
|
||||||
mu_msg_field_xapian_prefix (MuMsgFieldId id)
|
mu_msg_field_xapian_prefix (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),0);
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),0);
|
||||||
return mu_msg_field(id)->_xprefix;
|
return mu_msg_field(id)->_xprefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -347,7 +351,7 @@ mu_msg_field_xapian_prefix (MuMsgFieldId id)
|
||||||
MuMsgFieldType
|
MuMsgFieldType
|
||||||
mu_msg_field_type (MuMsgFieldId id)
|
mu_msg_field_type (MuMsgFieldId id)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (mu_msg_field_id_is_valid(id),
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),
|
||||||
MU_MSG_FIELD_TYPE_NONE);
|
MU_MSG_FIELD_TYPE_NONE);
|
||||||
return mu_msg_field(id)->_type;
|
return mu_msg_field(id)->_type;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,24 +27,27 @@ G_BEGIN_DECLS
|
||||||
/* don't change the order, add new types at the end, as these numbers
|
/* don't change the order, add new types at the end, as these numbers
|
||||||
* are used in the database */
|
* are used in the database */
|
||||||
enum _MuMsgFieldId {
|
enum _MuMsgFieldId {
|
||||||
|
|
||||||
|
/* first all the string-based ones */
|
||||||
MU_MSG_FIELD_ID_BCC = 0,
|
MU_MSG_FIELD_ID_BCC = 0,
|
||||||
MU_MSG_FIELD_ID_BODY_TEXT,
|
|
||||||
MU_MSG_FIELD_ID_BODY_HTML,
|
MU_MSG_FIELD_ID_BODY_HTML,
|
||||||
|
MU_MSG_FIELD_ID_BODY_TEXT,
|
||||||
MU_MSG_FIELD_ID_CC,
|
MU_MSG_FIELD_ID_CC,
|
||||||
MU_MSG_FIELD_ID_DATE,
|
|
||||||
MU_MSG_FIELD_ID_FLAGS,
|
|
||||||
MU_MSG_FIELD_ID_FROM,
|
MU_MSG_FIELD_ID_FROM,
|
||||||
|
MU_MSG_FIELD_ID_MAILDIR,
|
||||||
|
MU_MSG_FIELD_ID_MSGID,
|
||||||
MU_MSG_FIELD_ID_PATH,
|
MU_MSG_FIELD_ID_PATH,
|
||||||
MU_MSG_FIELD_ID_MAILDIR,
|
MU_MSG_FIELD_ID_REFS,
|
||||||
MU_MSG_FIELD_ID_PRIO,
|
|
||||||
MU_MSG_FIELD_ID_SIZE,
|
|
||||||
MU_MSG_FIELD_ID_SUBJECT,
|
MU_MSG_FIELD_ID_SUBJECT,
|
||||||
MU_MSG_FIELD_ID_TO,
|
MU_MSG_FIELD_ID_TO,
|
||||||
MU_MSG_FIELD_ID_MSGID,
|
/* MU_MSG_STRING_FIELD_ID_NUM, see below */
|
||||||
|
|
||||||
|
/* then the numerical ones */
|
||||||
|
MU_MSG_FIELD_ID_DATE,
|
||||||
|
MU_MSG_FIELD_ID_FLAGS,
|
||||||
|
MU_MSG_FIELD_ID_PRIO,
|
||||||
|
MU_MSG_FIELD_ID_SIZE,
|
||||||
MU_MSG_FIELD_ID_TIMESTAMP,
|
MU_MSG_FIELD_ID_TIMESTAMP,
|
||||||
MU_MSG_FIELD_ID_REFS,
|
|
||||||
MU_MSG_FIELD_ID_SUMMARY,
|
|
||||||
|
|
||||||
MU_MSG_FIELD_ID_NUM,
|
MU_MSG_FIELD_ID_NUM,
|
||||||
|
|
||||||
|
@ -57,6 +60,8 @@ typedef enum _MuMsgFieldId MuMsgFieldId;
|
||||||
|
|
||||||
/* some specials... */
|
/* some specials... */
|
||||||
static const MuMsgFieldId MU_MSG_FIELD_ID_NONE = (MuMsgFieldId)-1;
|
static const MuMsgFieldId MU_MSG_FIELD_ID_NONE = (MuMsgFieldId)-1;
|
||||||
|
#define MU_MSG_STRING_FIELD_ID_NUM (MU_MSG_FIELD_ID_TO + 1)
|
||||||
|
|
||||||
|
|
||||||
#define mu_msg_field_id_is_valid(MFID) \
|
#define mu_msg_field_id_is_valid(MFID) \
|
||||||
((MFID) < MU_MSG_FIELD_ID_NUM)
|
((MFID) < MU_MSG_FIELD_ID_NUM)
|
||||||
|
@ -149,6 +154,16 @@ MuMsgFieldType mu_msg_field_type (MuMsgFieldId id) G_GNUC_PURE;
|
||||||
gboolean mu_msg_field_is_numeric (MuMsgFieldId id) G_GNUC_PURE;
|
gboolean mu_msg_field_is_numeric (MuMsgFieldId id) G_GNUC_PURE;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* whether the field value should be cached (in MuMsg) -- we cache
|
||||||
|
* values so we can use the MuMsg without needing to keep the
|
||||||
|
* underlying data source (the GMimeMessage or the database ptr) alive
|
||||||
|
* in practice, the fields we *don't* cache are the message body
|
||||||
|
* (html, txt), because they take too much memory
|
||||||
|
*/
|
||||||
|
gboolean mu_msg_field_is_cacheable (MuMsgFieldId id) G_GNUC_PURE;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* is the field Xapian-indexable? That is, should this field be
|
* is the field Xapian-indexable? That is, should this field be
|
||||||
* indexed in the in the Xapian database, so we can use the all the
|
* indexed in the in the Xapian database, so we can use the all the
|
||||||
|
|
Loading…
Reference in New Issue