diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-01-09 08:13:29 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-01-13 17:20:55 +0100 |
commit | 595360506d18210c614ad8eacf5a1819ae91704e (patch) | |
tree | 9d446f7bd52d3d143f4bdc01f2e122157470651b /src/sql/kernel/qsqlrecord.cpp | |
parent | 0cd153b2681437b91f07315a27238446cc24363f (diff) |
QSqlRecord: add missing C++11 move SMFs
[ChangeLog][QtSql][QSqlRecord] Added move constructor, -assignment
operator, and swap().
Task-number: QTBUG-109938
Change-Id: I54f2666defbf56f5ba2faea6358722ebd7cac157
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/sql/kernel/qsqlrecord.cpp')
-rw-r--r-- | src/sql/kernel/qsqlrecord.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/sql/kernel/qsqlrecord.cpp b/src/sql/kernel/qsqlrecord.cpp index a3c6a9debf..bd2be0fc7a 100644 --- a/src/sql/kernel/qsqlrecord.cpp +++ b/src/sql/kernel/qsqlrecord.cpp @@ -89,6 +89,37 @@ QSqlRecord::QSqlRecord(const QSqlRecord& other) } /*! + \fn QSqlRecord::QSqlRecord(QSqlRecord &&other) + \since 6.6 + + Move-constructs a new QSqlRecord from \a other. + + \note The moved-from object \a other is placed in a partially-formed state, + in which the only valid operations are destruction and assignment of a new + value. +*/ + +/*! + \fn QSqlRecord &QSqlRecord::operator=(QSqlRecord &&other) + \since 6.6 + + Move-assigns \a other to this QSqlRecord instance. + + \note The moved-from object \a other is placed in a partially-formed state, + in which the only valid operations are destruction and assignment of a new + value. +*/ + +/*! + \fn void QSqlRecord::swap(QSqlRecord &other) + \since 6.6 + + Swaps SQL record \a other with this SQL record. This operation is very fast + and never fails. +*/ + + +/*! Sets the record equal to \a other. QSqlRecord is \l{implicitly shared}. This means you can make copies @@ -97,7 +128,7 @@ QSqlRecord::QSqlRecord(const QSqlRecord& other) QSqlRecord& QSqlRecord::operator=(const QSqlRecord& other) { - qAtomicAssign(d, other.d); + QSqlRecord(other).swap(*this); return *this; } @@ -107,7 +138,7 @@ QSqlRecord& QSqlRecord::operator=(const QSqlRecord& other) QSqlRecord::~QSqlRecord() { - if (!d->ref.deref()) + if (d && !d->ref.deref()) delete d; } |