forked from qt-creator/qt-creator
Clang: Improve interfaces
The interfaces should never used to handle ownership. So it is now using protected destructors. Copy operations are forbidden too. https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-nonvirtual Change-Id: Ib0b60a73a7ec130973b5cb0095cc5b2f10fa0758 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -17,7 +17,6 @@ SOURCES += \
|
||||
$$PWD/sqliteglobal.cpp \
|
||||
$$PWD/sqlitereadstatement.cpp \
|
||||
$$PWD/sqlitereadwritestatement.cpp \
|
||||
$$PWD/sqlitetransaction.cpp \
|
||||
$$PWD/sqlitewritestatement.cpp \
|
||||
$$PWD/sqlstatementbuilder.cpp \
|
||||
$$PWD/sqlstatementbuilderexception.cpp \
|
||||
|
||||
@@ -53,6 +53,9 @@ class SQLITE_EXPORT BaseStatement
|
||||
public:
|
||||
explicit BaseStatement(Utils::SmallStringView sqlStatement, Database &database);
|
||||
|
||||
BaseStatement(const BaseStatement &) = delete;
|
||||
BaseStatement &operator=(const BaseStatement &) = delete;
|
||||
|
||||
static void deleteCompiledStatement(sqlite3_stmt *m_compiledStatement);
|
||||
|
||||
bool next() const;
|
||||
@@ -123,6 +126,9 @@ public:
|
||||
|
||||
Database &database() const;
|
||||
|
||||
protected:
|
||||
~BaseStatement() = default;
|
||||
|
||||
private:
|
||||
std::unique_ptr<sqlite3_stmt, void (*)(sqlite3_stmt*)> m_compiledStatement;
|
||||
Database &m_database;
|
||||
@@ -146,7 +152,7 @@ extern template SQLITE_EXPORT Utils::SmallString BaseStatement::fetchValue<Utils
|
||||
extern template SQLITE_EXPORT Utils::PathString BaseStatement::fetchValue<Utils::PathString>(int column) const;
|
||||
|
||||
template <typename BaseStatement>
|
||||
class SQLITE_EXPORT StatementImplementation : public BaseStatement
|
||||
class StatementImplementation : public BaseStatement
|
||||
{
|
||||
|
||||
public:
|
||||
@@ -290,6 +296,8 @@ public:
|
||||
return statement.template fetchValue<Type>(0);
|
||||
}
|
||||
|
||||
protected:
|
||||
~StatementImplementation() = default;
|
||||
|
||||
private:
|
||||
struct Resetter
|
||||
|
||||
@@ -55,10 +55,7 @@ public:
|
||||
Database(Utils::PathString &&databaseFilePath, JournalMode journalMode=JournalMode::Wal);
|
||||
|
||||
Database(const Database &) = delete;
|
||||
bool operator=(const Database &) = delete;
|
||||
|
||||
Database(Database &&) = delete;
|
||||
bool operator=(Database &&) = delete;
|
||||
Database &operator=(const Database &) = delete;
|
||||
|
||||
void open();
|
||||
void open(Utils::PathString &&databaseFilePath);
|
||||
|
||||
@@ -35,11 +35,10 @@ namespace Sqlite {
|
||||
class DatabaseBackend;
|
||||
class Database;
|
||||
|
||||
class SQLITE_EXPORT TransactionInterface
|
||||
class TransactionInterface
|
||||
{
|
||||
public:
|
||||
TransactionInterface() = default;
|
||||
virtual ~TransactionInterface();
|
||||
TransactionInterface(const TransactionInterface &) = delete;
|
||||
TransactionInterface &operator=(const TransactionInterface &) = delete;
|
||||
|
||||
@@ -48,6 +47,9 @@ public:
|
||||
virtual void exclusiveBegin() = 0;
|
||||
virtual void commit() = 0;
|
||||
virtual void rollback() = 0;
|
||||
|
||||
protected:
|
||||
~TransactionInterface() = default;
|
||||
};
|
||||
|
||||
class AbstractTransaction
|
||||
@@ -63,6 +65,7 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
~AbstractTransaction() = default;
|
||||
AbstractTransaction(TransactionInterface &interface)
|
||||
: m_interface(interface)
|
||||
{
|
||||
@@ -76,6 +79,8 @@ protected:
|
||||
class AbstractThrowingTransaction : public AbstractTransaction
|
||||
{
|
||||
public:
|
||||
AbstractThrowingTransaction(const AbstractThrowingTransaction &) = delete;
|
||||
AbstractThrowingTransaction &operator=(const AbstractThrowingTransaction &) = delete;
|
||||
~AbstractThrowingTransaction() noexcept(false)
|
||||
{
|
||||
try {
|
||||
@@ -97,6 +102,8 @@ protected:
|
||||
class AbstractNonThrowingDestructorTransaction : public AbstractTransaction
|
||||
{
|
||||
public:
|
||||
AbstractNonThrowingDestructorTransaction(const AbstractNonThrowingDestructorTransaction &) = delete;
|
||||
AbstractNonThrowingDestructorTransaction &operator=(const AbstractNonThrowingDestructorTransaction &) = delete;
|
||||
~AbstractNonThrowingDestructorTransaction()
|
||||
{
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user