mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 12:28:09 +01:00
Move find_prefix function from database.cc to message.cc
It's definitely a better fit there for now, (and can likely eventually be made static as add_term moves from database to message as well).
This commit is contained in:
parent
baf1867cc4
commit
6142216132
3 changed files with 61 additions and 57 deletions
59
database.cc
59
database.cc
|
@ -28,61 +28,6 @@
|
|||
|
||||
using namespace std;
|
||||
|
||||
#define ARRAY_SIZE(arr) (sizeof (arr) / sizeof (arr[0]))
|
||||
|
||||
/* Xapian complains if we provide a term longer than this. */
|
||||
#define NOTMUCH_MAX_TERM 245
|
||||
|
||||
/* These prefix values are specifically chosen to be compatible
|
||||
* with sup, (http://sup.rubyforge.org), written by
|
||||
* William Morgan <wmorgan-sup@masanjin.net>, and released
|
||||
* under the GNU GPL v2.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const char *prefix;
|
||||
} prefix_t;
|
||||
|
||||
prefix_t NORMAL_PREFIX[] = {
|
||||
{ "subject", "S" },
|
||||
{ "body", "B" },
|
||||
{ "from_name", "FN" },
|
||||
{ "to_name", "TN" },
|
||||
{ "name", "N" },
|
||||
{ "attachment", "A" }
|
||||
};
|
||||
|
||||
prefix_t BOOLEAN_PREFIX[] = {
|
||||
{ "type", "K" },
|
||||
{ "from_email", "FE" },
|
||||
{ "to_email", "TE" },
|
||||
{ "email", "E" },
|
||||
{ "date", "D" },
|
||||
{ "label", "L" },
|
||||
{ "source_id", "I" },
|
||||
{ "attachment_extension", "O" },
|
||||
{ "msgid", "Q" },
|
||||
{ "thread", "H" },
|
||||
{ "ref", "R" }
|
||||
};
|
||||
|
||||
static const char *
|
||||
find_prefix (const char *name)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE (NORMAL_PREFIX); i++)
|
||||
if (strcmp (name, NORMAL_PREFIX[i].name) == 0)
|
||||
return NORMAL_PREFIX[i].prefix;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE (BOOLEAN_PREFIX); i++)
|
||||
if (strcmp (name, BOOLEAN_PREFIX[i].name) == 0)
|
||||
return BOOLEAN_PREFIX[i].prefix;
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
/* "128 bits of thread-id ought to be enough for anybody" */
|
||||
#define NOTMUCH_THREAD_ID_BITS 128
|
||||
#define NOTMUCH_THREAD_ID_DIGITS (NOTMUCH_THREAD_ID_BITS / 4)
|
||||
|
@ -130,7 +75,7 @@ add_term (Xapian::Document doc,
|
|||
if (value == NULL)
|
||||
return;
|
||||
|
||||
prefix = find_prefix (prefix_name);
|
||||
prefix = _find_prefix (prefix_name);
|
||||
|
||||
term = g_strdup_printf ("%s%s", prefix, value);
|
||||
|
||||
|
@ -150,7 +95,7 @@ find_messages_by_term (Xapian::Database *db,
|
|||
Xapian::PostingIterator i;
|
||||
char *term;
|
||||
|
||||
term = g_strdup_printf ("%s%s", find_prefix (prefix_name), value);
|
||||
term = g_strdup_printf ("%s%s", _find_prefix (prefix_name), value);
|
||||
|
||||
*begin = db->postlist_begin (term);
|
||||
|
||||
|
|
52
message.cc
52
message.cc
|
@ -32,6 +32,58 @@ struct _notmuch_tags {
|
|||
Xapian::TermIterator iterator_end;
|
||||
};
|
||||
|
||||
#define ARRAY_SIZE(arr) (sizeof (arr) / sizeof (arr[0]))
|
||||
|
||||
/* These prefix values are specifically chosen to be compatible
|
||||
* with sup, (http://sup.rubyforge.org), written by
|
||||
* William Morgan <wmorgan-sup@masanjin.net>, and released
|
||||
* under the GNU GPL v2.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const char *prefix;
|
||||
} prefix_t;
|
||||
|
||||
prefix_t NORMAL_PREFIX[] = {
|
||||
{ "subject", "S" },
|
||||
{ "body", "B" },
|
||||
{ "from_name", "FN" },
|
||||
{ "to_name", "TN" },
|
||||
{ "name", "N" },
|
||||
{ "attachment", "A" }
|
||||
};
|
||||
|
||||
prefix_t BOOLEAN_PREFIX[] = {
|
||||
{ "type", "K" },
|
||||
{ "from_email", "FE" },
|
||||
{ "to_email", "TE" },
|
||||
{ "email", "E" },
|
||||
{ "date", "D" },
|
||||
{ "label", "L" },
|
||||
{ "source_id", "I" },
|
||||
{ "attachment_extension", "O" },
|
||||
{ "msgid", "Q" },
|
||||
{ "thread", "H" },
|
||||
{ "ref", "R" }
|
||||
};
|
||||
|
||||
const char *
|
||||
_find_prefix (const char *name)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE (NORMAL_PREFIX); i++)
|
||||
if (strcmp (name, NORMAL_PREFIX[i].name) == 0)
|
||||
return NORMAL_PREFIX[i].prefix;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE (BOOLEAN_PREFIX); i++)
|
||||
if (strcmp (name, BOOLEAN_PREFIX[i].name) == 0)
|
||||
return BOOLEAN_PREFIX[i].prefix;
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
/* We end up having to call the destructor explicitly because we had
|
||||
* to use "placement new" in order to initialize C++ objects within a
|
||||
* block that we allocated with talloc. So C++ is making talloc
|
||||
|
|
|
@ -76,6 +76,9 @@ typedef enum {
|
|||
NOTMUCH_VALUE_DATE = 2
|
||||
} notmuch_value_t;
|
||||
|
||||
/* Xapian complains if we provide a term longer than this. */
|
||||
#define NOTMUCH_MAX_TERM 245
|
||||
|
||||
/* message.cc */
|
||||
|
||||
notmuch_message_t *
|
||||
|
@ -83,6 +86,10 @@ _notmuch_message_create (notmuch_results_t *owner,
|
|||
notmuch_database_t *notmuch,
|
||||
unsigned int doc_id);
|
||||
|
||||
/* Lookup a prefix value by name. */
|
||||
const char *
|
||||
_find_prefix (const char *name);
|
||||
|
||||
/* message-file.c */
|
||||
|
||||
/* XXX: I haven't decided yet whether these will actually get exported
|
||||
|
|
Loading…
Reference in a new issue