X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fdatabase-private.h;h=06882439fc580f88b827b6648b267855b7e5abd4;hp=4e932572ac7a7ea9f45c5328989cf1b1dade1955;hb=e17a914b77230d942b36639c261c345849fe9d52;hpb=98ee460eaa98f1428aecf03dd39fcf314e6f62c0 diff --git a/lib/database-private.h b/lib/database-private.h index 4e932572..06882439 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,6 +32,10 @@ #include "notmuch-private.h" +#ifdef SILENCE_XAPIAN_DEPRECATION_WARNINGS +#define XAPIAN_DEPRECATED(D) D +#endif + #include #pragma GCC visibility push(hidden) @@ -144,6 +148,37 @@ 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_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 | \ + Xapian::QueryParser::FLAG_BOOLEAN_ANY_CASE | \ + Xapian::QueryParser::FLAG_WILDCARD | \ + Xapian::QueryParser::FLAG_PURE_NOT) + struct _notmuch_database { notmuch_bool_t exception_reported; @@ -172,10 +207,15 @@ 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; + Xapian::ValueRangeProcessor *last_mod_range_processor; }; /* Prior to database version 3, features were implied by the database