aboutsummaryrefslogtreecommitdiff
path: root/lib/database-private.h
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2021-10-27 22:34:18 -0300
committerDavid Bremner <david@tethera.net>2021-12-03 20:50:03 -0400
commitd467444085d96229172ce29ef8654c3c459b6ce2 (patch)
treed8d5bdc02c81cf3700192750b2751a15d8e11dd9 /lib/database-private.h
parent378415a55762ff0222e3de6a2e20a9823ce1d07e (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.h36
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