]> git.notmuchmail.org Git - notmuch/blobdiff - lib/database-private.h
Add a generic function to get a list of terms with some prefix.
[notmuch] / lib / database-private.h
index 76e26ce0045b70811c987c66a8bce2496c0f74de..f7050097bbccc3054b8a42a536eff6756eb0072e 100644 (file)
 #ifndef NOTMUCH_DATABASE_PRIVATE_H
 #define NOTMUCH_DATABASE_PRIVATE_H
 
+/* According to WG14/N1124, a C++ implementation won't provide us a
+ * macro like PRIx64 (which gives a printf format string for
+ * formatting a uint64_t as hexadecimal) unless we define
+ * __STDC_FORMAT_MACROS before including inttypes.h. That's annoying,
+ * but there it is.
+ */
+#define __STDC_FORMAT_MACROS
+#include <inttypes.h>
+
 #include "notmuch-private.h"
 
 #include <xapian.h>
 
+#pragma GCC visibility push(hidden)
+
 struct _notmuch_database {
+    notmuch_bool_t exception_reported;
+
     char *path;
-    Xapian::WritableDatabase *xapian_db;
+
+    notmuch_bool_t needs_upgrade;
+    notmuch_database_mode_t mode;
+    Xapian::Database *xapian_db;
+
+    unsigned int last_doc_id;
+    uint64_t last_thread_id;
+
     Xapian::QueryParser *query_parser;
     Xapian::TermGenerator *term_gen;
+    Xapian::ValueRangeProcessor *value_range_processor;
 };
 
+/* Return the list of terms from the given iterator matching a prefix.
+ * The prefix will be stripped from the strings in the returned list.
+ * The list will be allocated using ctx as the talloc context.
+ *
+ * The function returns NULL on failure.
+ */
+notmuch_string_list_t *
+_notmuch_database_get_terms_with_prefix (void *ctx, Xapian::TermIterator &i,
+                                        Xapian::TermIterator &end,
+                                        const char *prefix);
+
+#pragma GCC visibility pop
+
 #endif