diff options
| author | David Bremner <david@tethera.net> | 2020-07-26 20:31:36 -0300 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2020-07-28 08:47:58 -0300 |
| commit | a09293793f43b93b7008dd361b192199ad528fca (patch) | |
| tree | 3655943388b32c142f8783df12368863d5783b18 /lib/directory.cc | |
| parent | d7d4c729ab3b74eaaebe64cb8c7383b0ea06cec0 (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.cc | 18 |
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", |
