X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fdatabase-private.h;h=a499b2594be44d5a12ae671e668f5ab1f6b9c905;hb=87934c432c4bee9df09f268a3f05933c59c2caf1;hp=d2990b6ce72436caa173a125db6c03b9b247d2c6;hpb=30caaf52b022be5f0f695f3088286fb56e82c782;p=notmuch diff --git a/lib/database-private.h b/lib/database-private.h index d2990b6c..a499b259 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -13,7 +13,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/ . + * along with this program. If not, see https://www.gnu.org/licenses/ . * * Author: Carl Worth */ @@ -32,9 +32,11 @@ #include "notmuch-private.h" -#include +#ifdef SILENCE_XAPIAN_DEPRECATION_WARNINGS +#define XAPIAN_DEPRECATED(D) D +#endif -#pragma GCC visibility push(hidden) +#include /* Bit masks for _notmuch_database::features. Features are named, * independent aspects of the database schema. @@ -144,6 +146,31 @@ operator&=(_notmuch_features &a, _notmuch_features b) return a; } +/* + * Configuration options for xapian database fields */ +typedef enum notmuch_field_flags { + NOTMUCH_FIELD_NO_FLAGS = 0, + NOTMUCH_FIELD_EXTERNAL = 1 << 0, + NOTMUCH_FIELD_PROBABILISTIC = 1 << 1, + NOTMUCH_FIELD_PROCESSOR = 1 << 2, +} notmuch_field_flag_t; + +/* + * define bitwise operators to hide casts */ +inline notmuch_field_flag_t +operator|(notmuch_field_flag_t a, notmuch_field_flag_t b) +{ + return static_cast( + static_cast(a) | static_cast(b)); +} + +inline notmuch_field_flag_t +operator&(notmuch_field_flag_t a, notmuch_field_flag_t b) +{ + return static_cast( + static_cast(a) & static_cast(b)); +} + #define NOTMUCH_QUERY_PARSER_FLAGS (Xapian::QueryParser::FLAG_BOOLEAN | \ Xapian::QueryParser::FLAG_PHRASE | \ Xapian::QueryParser::FLAG_LOVEHATE | \ @@ -152,14 +179,14 @@ operator&=(_notmuch_features &a, _notmuch_features b) Xapian::QueryParser::FLAG_PURE_NOT) struct _notmuch_database { - notmuch_bool_t exception_reported; + bool exception_reported; char *path; notmuch_database_mode_t mode; int atomic_nesting; - /* TRUE if changes have been made in this atomic section */ - notmuch_bool_t atomic_dirty; + /* true if changes have been made in this atomic section */ + bool atomic_dirty; Xapian::Database *xapian_db; /* Bit mask of features used by this database. This is a @@ -179,13 +206,14 @@ struct _notmuch_database { unsigned long revision; const char *uuid; + /* Keep track of the number of times the database has been re-opened + * (or other global invalidations of notmuch's caching) + */ + unsigned long view; Xapian::QueryParser *query_parser; Xapian::TermGenerator *term_gen; Xapian::ValueRangeProcessor *value_range_processor; Xapian::ValueRangeProcessor *date_range_processor; -#if HAVE_XAPIAN_FIELD_PROCESSOR - Xapian::FieldProcessor *date_field_processor; -#endif Xapian::ValueRangeProcessor *last_mod_range_processor; }; @@ -218,6 +246,10 @@ _notmuch_database_get_terms_with_prefix (void *ctx, Xapian::TermIterator &i, Xapian::TermIterator &end, const char *prefix); -#pragma GCC visibility pop - +void +_notmuch_database_find_doc_ids (notmuch_database_t *notmuch, + const char *prefix_name, + const char *value, + Xapian::PostingIterator *begin, + Xapian::PostingIterator *end); #endif