summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhaslersn <sebastian.hasler@gmx.net>2019-06-10 03:59:03 +0200
committerhaslersn <sebastian.hasler@gmx.net>2019-07-02 00:18:10 +0200
commitf7f269e7860e8cae1d80e47a7744032717ddccc7 (patch)
treee38b89cc369fd17a4a9e30c9c7effc0fa6435773
parenta4d4f59b27e13bc59bbb8e98186ce2258cf943e4 (diff)
database: Make database objects copyable
-rw-r--r--include/djinterop/enginelibrary/database.hpp6
-rw-r--r--src/enginelibrary/database.cpp14
2 files changed, 16 insertions, 4 deletions
diff --git a/include/djinterop/enginelibrary/database.hpp b/include/djinterop/enginelibrary/database.hpp
index 28207ce..196eaee 100644
--- a/include/djinterop/enginelibrary/database.hpp
+++ b/include/djinterop/enginelibrary/database.hpp
@@ -55,7 +55,7 @@ public:
/**
* \brief Copying is disallowed
*/
- database(const database &db) = delete;
+ database(const database &db);
/**
* \brief Destructor
@@ -65,7 +65,7 @@ public:
/**
* \brief Copy assignment is disallowed
*/
- database &operator=(const database &db) = delete;
+ database &operator=(const database &db);
/**
* \brief Returns a `bool` indicating whether the database files exist on
@@ -112,7 +112,7 @@ public:
private:
struct impl;
- std::unique_ptr<impl> pimpl_;
+ std::shared_ptr<impl> pimpl_;
};
/**
diff --git a/src/enginelibrary/database.cpp b/src/enginelibrary/database.cpp
index d6aaa7a..fd3df4a 100644
--- a/src/enginelibrary/database.cpp
+++ b/src/enginelibrary/database.cpp
@@ -93,14 +93,22 @@ struct database::impl
schema_version version_;
};
-database::database(const std::string &dir_path) : pimpl_{new impl{dir_path}} {}
+database::database(const std::string &dir_path)
+ : pimpl_{std::make_shared<impl>(dir_path)}
+{
+}
+
+database::database(const database &db) = default;
database::~database() = default;
+database &database::operator=(const database &db) = default;
+
bool database::exists() const
{
return pimpl_->exists();
}
+
bool database::is_supported() const
{
return pimpl_->is_supported();
@@ -115,18 +123,22 @@ std::string database::directory_path() const
{
return pimpl_->dir_path_;
}
+
std::string database::music_db_path() const
{
return pimpl_->db_m_path_;
}
+
std::string database::performance_db_path() const
{
return pimpl_->db_p_path_;
}
+
std::string database::uuid() const
{
return pimpl_->uuid_;
}
+
schema_version database::version() const
{
return pimpl_->version_;