X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fdatabase-private.h;h=d3e65fd64a8ba0508a59e374a2daab80f987a434;hp=76e26ce0045b70811c987c66a8bce2496c0f74de;hb=90cd1bac4eeb0d57fbe2740625aaa58d8d925ee5;hpb=146549321044615d9aef2b30cedccda9c49f3f38 diff --git a/lib/database-private.h b/lib/database-private.h index 76e26ce0..d3e65fd6 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -21,15 +21,51 @@ #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 + #include "notmuch-private.h" #include +#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; + int atomic_nesting; + 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; + Xapian::ValueRangeProcessor *date_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