diff options
| author | David Bremner <david@tethera.net> | 2021-10-27 22:34:18 -0300 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2021-12-03 20:50:03 -0400 |
| commit | d467444085d96229172ce29ef8654c3c459b6ce2 (patch) | |
| tree | d8d5bdc02c81cf3700192750b2751a15d8e11dd9 /lib/database-private.h | |
| parent | 378415a55762ff0222e3de6a2e20a9823ce1d07e (diff) | |
lib/open: track which parameters are passed
This will be used to fine tune the loading of configuration for
certain special configuration items (initially just "database.path").
Diffstat (limited to 'lib/database-private.h')
| -rw-r--r-- | lib/database-private.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/database-private.h b/lib/database-private.h index 8b9d67fe..8dd77281 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -190,6 +190,39 @@ operator& (notmuch_field_flag_t a, notmuch_field_flag_t b) Xapian::QueryParser::FLAG_WILDCARD | \ Xapian::QueryParser::FLAG_PURE_NOT) +/* + * Which parameters were explicit when the database was opened */ +typedef enum { + NOTMUCH_PARAM_NONE = 0, + NOTMUCH_PARAM_DATABASE = 1 << 0, + NOTMUCH_PARAM_CONFIG = 1 << 1, + NOTMUCH_PARAM_PROFILE = 1 << 2, +} notmuch_open_param_t; + +/* + * define bitwise operators to hide casts */ + +inline notmuch_open_param_t +operator| (notmuch_open_param_t a, notmuch_open_param_t b) +{ + return static_cast<notmuch_open_param_t>( + static_cast<unsigned>(a) | static_cast<unsigned>(b)); +} + +inline notmuch_open_param_t& +operator|= (notmuch_open_param_t &a, notmuch_open_param_t b) +{ + a = a | b; + return a; +} + +inline notmuch_open_param_t +operator& (notmuch_open_param_t a, notmuch_open_param_t b) +{ + return static_cast<notmuch_open_param_t>( + static_cast<unsigned>(a) & static_cast<unsigned>(b)); +} + struct _notmuch_database { bool exception_reported; @@ -249,6 +282,9 @@ struct _notmuch_database { /* Cached and possibly overridden configuration */ notmuch_string_map_t *config; + + /* Track what parameters were specified when opening */ + notmuch_open_param_t params; }; /* Prior to database version 3, features were implied by the database |
