diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2023-03-27 19:26:38 +0200 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2023-04-26 19:56:07 +0000 |
commit | 204f1764ca6f4b670eaa87a775ded09a72a07aba (patch) | |
tree | 0101ae8fd143091df12ddf1274b3e94706cce141 /src/sql/kernel/qsqlrecord.cpp | |
parent | f291575d95ab0159fa809c63855f787ccb1877f5 (diff) |
QSqlRecord: use QSharedData for private class
Use QSharedData for the private class instead a home-brew version.
Change-Id: Id3625bb0eb8f81c9caa672e2453dab3d44b15ea9
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/sql/kernel/qsqlrecord.cpp')
-rw-r--r-- | src/sql/kernel/qsqlrecord.cpp | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/src/sql/kernel/qsqlrecord.cpp b/src/sql/kernel/qsqlrecord.cpp index c9f26e27a1..e4d2c96c6b 100644 --- a/src/sql/kernel/qsqlrecord.cpp +++ b/src/sql/kernel/qsqlrecord.cpp @@ -11,23 +11,17 @@ QT_BEGIN_NAMESPACE -class QSqlRecordPrivate +class QSqlRecordPrivate : public QSharedData { public: - QSqlRecordPrivate() = default; - QSqlRecordPrivate(const QSqlRecordPrivate &other) - : fields(other.fields) - { - } - inline bool contains(qsizetype index) const { return index >= 0 && index < fields.size(); } QList<QSqlField> fields; - QAtomicInt ref{1}; }; +QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QSqlRecordPrivate) /*! \class QSqlRecord @@ -82,10 +76,7 @@ QSqlRecord::QSqlRecord() */ QSqlRecord::QSqlRecord(const QSqlRecord& other) - : d(other.d) -{ - d->ref.ref(); -} + = default; /*! \fn QSqlRecord::QSqlRecord(QSqlRecord &&other) @@ -126,20 +117,15 @@ QSqlRecord::QSqlRecord(const QSqlRecord& other) */ QSqlRecord& QSqlRecord::operator=(const QSqlRecord& other) -{ - QSqlRecord(other).swap(*this); - return *this; -} + = default; /*! Destroys the object and frees any allocated resources. */ QSqlRecord::~QSqlRecord() -{ - if (d && !d->ref.deref()) - delete d; -} + = default; + /*! \fn bool QSqlRecord::operator!=(const QSqlRecord &other) const @@ -501,7 +487,7 @@ void QSqlRecord::setValue(const QString& name, const QVariant& val) */ void QSqlRecord::detach() { - qAtomicDetach(d); + d.detach(); } #ifndef QT_NO_DEBUG_STREAM |