aboutsummaryrefslogtreecommitdiff
path: root/lib/directory.cc
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2020-07-26 20:31:36 -0300
committerDavid Bremner <david@tethera.net>2020-07-28 08:47:58 -0300
commita09293793f43b93b7008dd361b192199ad528fca (patch)
tree3655943388b32c142f8783df12368863d5783b18 /lib/directory.cc
parentd7d4c729ab3b74eaaebe64cb8c7383b0ea06cec0 (diff)
lib: replace use of static_cast for writable databases
static_cast is a bit tricky to understand and error prone, so add a second pointer to (potentially the same) Xapian database object that we know has the right subclass.
Diffstat (limited to 'lib/directory.cc')
-rw-r--r--lib/directory.cc18
1 files changed, 7 insertions, 11 deletions
diff --git a/lib/directory.cc b/lib/directory.cc
index eaba65ab..b9c3d77f 100644
--- a/lib/directory.cc
+++ b/lib/directory.cc
@@ -99,7 +99,6 @@ _notmuch_directory_find_or_create (notmuch_database_t *notmuch,
notmuch_find_flags_t flags,
notmuch_status_t *status_ret)
{
- Xapian::WritableDatabase *db;
notmuch_directory_t *directory;
notmuch_private_status_t private_status;
const char *db_path;
@@ -176,10 +175,10 @@ _notmuch_directory_find_or_create (notmuch_database_t *notmuch,
directory->doc.add_value (NOTMUCH_VALUE_TIMESTAMP,
Xapian::sortable_serialise (0));
- db = static_cast <Xapian::WritableDatabase *> (notmuch->xapian_db);
-
directory->document_id = _notmuch_database_generate_doc_id (notmuch);
- db->replace_document (directory->document_id, directory->doc);
+ directory->notmuch->
+ writable_xapian_db
+ -> replace_document (directory->document_id, directory->doc);
talloc_free (local);
}
@@ -213,20 +212,18 @@ notmuch_directory_set_mtime (notmuch_directory_t *directory,
time_t mtime)
{
notmuch_database_t *notmuch = directory->notmuch;
- Xapian::WritableDatabase *db;
notmuch_status_t status;
status = _notmuch_database_ensure_writable (notmuch);
if (status)
return status;
- db = static_cast <Xapian::WritableDatabase *> (notmuch->xapian_db);
-
try {
directory->doc.add_value (NOTMUCH_VALUE_TIMESTAMP,
Xapian::sortable_serialise (mtime));
- db->replace_document (directory->document_id, directory->doc);
+ directory->notmuch
+ ->writable_xapian_db->replace_document (directory->document_id, directory->doc);
directory->mtime = mtime;
@@ -288,15 +285,14 @@ notmuch_status_t
notmuch_directory_delete (notmuch_directory_t *directory)
{
notmuch_status_t status;
- Xapian::WritableDatabase *db;
status = _notmuch_database_ensure_writable (directory->notmuch);
if (status)
return status;
try {
- db = static_cast <Xapian::WritableDatabase *> (directory->notmuch->xapian_db);
- db->delete_document (directory->document_id);
+ directory->notmuch->
+ writable_xapian_db->delete_document (directory->document_id);
} catch (const Xapian::Error &error) {
_notmuch_database_log (directory->notmuch,
"A Xapian exception occurred deleting directory entry: %s.\n",