Q(Explicitly)SharedDataPointer: mark ctors [[nodiscard]]
They're RAII classes, and RAII class' constructors should be marked [[nodiscard]]. Task-number: QTBUG-104164 Change-Id: If4265a431839a5d3c16dcc855b1ded2d2fc7408c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit c823bc2fdba412e867373ef60be8c48feb3c1a48) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
c62e0ed703
commit
308d0b5f96
@ -51,13 +51,17 @@ public:
|
|||||||
const T *constData() const noexcept { return d; }
|
const T *constData() const noexcept { return d; }
|
||||||
T *take() noexcept { return std::exchange(d, nullptr); }
|
T *take() noexcept { return std::exchange(d, nullptr); }
|
||||||
|
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QSharedDataPointer() noexcept : d(nullptr) { }
|
QSharedDataPointer() noexcept : d(nullptr) { }
|
||||||
~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; }
|
~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; }
|
||||||
|
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
explicit QSharedDataPointer(T *data) noexcept : d(data)
|
explicit QSharedDataPointer(T *data) noexcept : d(data)
|
||||||
{ if (d) d->ref.ref(); }
|
{ if (d) d->ref.ref(); }
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QSharedDataPointer(T *data, QAdoptSharedDataTag) noexcept : d(data)
|
QSharedDataPointer(T *data, QAdoptSharedDataTag) noexcept : d(data)
|
||||||
{}
|
{}
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QSharedDataPointer(const QSharedDataPointer &o) noexcept : d(o.d)
|
QSharedDataPointer(const QSharedDataPointer &o) noexcept : d(o.d)
|
||||||
{ if (d) d->ref.ref(); }
|
{ if (d) d->ref.ref(); }
|
||||||
|
|
||||||
@ -82,6 +86,7 @@ public:
|
|||||||
reset(o);
|
reset(o);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QSharedDataPointer(QSharedDataPointer &&o) noexcept : d(std::exchange(o.d, nullptr)) {}
|
QSharedDataPointer(QSharedDataPointer &&o) noexcept : d(std::exchange(o.d, nullptr)) {}
|
||||||
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QSharedDataPointer)
|
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QSharedDataPointer)
|
||||||
|
|
||||||
@ -139,17 +144,22 @@ public:
|
|||||||
|
|
||||||
void detach() { if (d && d->ref.loadRelaxed() != 1) detach_helper(); }
|
void detach() { if (d && d->ref.loadRelaxed() != 1) detach_helper(); }
|
||||||
|
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QExplicitlySharedDataPointer() noexcept : d(nullptr) { }
|
QExplicitlySharedDataPointer() noexcept : d(nullptr) { }
|
||||||
~QExplicitlySharedDataPointer() { if (d && !d->ref.deref()) delete d; }
|
~QExplicitlySharedDataPointer() { if (d && !d->ref.deref()) delete d; }
|
||||||
|
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
explicit QExplicitlySharedDataPointer(T *data) noexcept : d(data)
|
explicit QExplicitlySharedDataPointer(T *data) noexcept : d(data)
|
||||||
{ if (d) d->ref.ref(); }
|
{ if (d) d->ref.ref(); }
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QExplicitlySharedDataPointer(T *data, QAdoptSharedDataTag) noexcept : d(data)
|
QExplicitlySharedDataPointer(T *data, QAdoptSharedDataTag) noexcept : d(data)
|
||||||
{}
|
{}
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer &o) noexcept : d(o.d)
|
QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer &o) noexcept : d(o.d)
|
||||||
{ if (d) d->ref.ref(); }
|
{ if (d) d->ref.ref(); }
|
||||||
|
|
||||||
template<typename X>
|
template<typename X>
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<X> &o) noexcept
|
QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<X> &o) noexcept
|
||||||
#ifdef QT_ENABLE_QEXPLICITLYSHAREDDATAPOINTER_STATICCAST
|
#ifdef QT_ENABLE_QEXPLICITLYSHAREDDATAPOINTER_STATICCAST
|
||||||
: d(static_cast<T *>(o.data()))
|
: d(static_cast<T *>(o.data()))
|
||||||
@ -179,6 +189,7 @@ public:
|
|||||||
reset(o);
|
reset(o);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
Q_NODISCARD_CTOR
|
||||||
QExplicitlySharedDataPointer(QExplicitlySharedDataPointer &&o) noexcept : d(std::exchange(o.d, nullptr)) {}
|
QExplicitlySharedDataPointer(QExplicitlySharedDataPointer &&o) noexcept : d(std::exchange(o.d, nullptr)) {}
|
||||||
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QExplicitlySharedDataPointer)
|
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QExplicitlySharedDataPointer)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user