-struct _notmuch_database {
- char *path;
- Xapian::WritableDatabase *xapian_db;
- Xapian::TermGenerator *term_gen;
-};
-
-#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" }
-};
-
-/* Similarly, these value numbers are also chosen to be sup
- * compatible. */
-
-typedef enum {
- NOTMUCH_VALUE_MESSAGE_ID = 0,
- NOTMUCH_VALUE_THREAD = 1,
- NOTMUCH_VALUE_DATE = 2
-} notmuch_value_t;
-
-static const char *
-find_prefix (const char *name)