6#pragma qt_sync_skip_header_check
7#pragma qt_sync_stop_processing
10#ifndef QSHAREDDATA_IMPL_H
11#define QSHAREDDATA_IMPL_H
13#include <QtCore/qcompare.h>
14#include <QtCore/qglobal.h>
15#include <QtCore/qshareddata.h>
24 Qt::totally_ordered_wrapper<T *> d;
69 if (d && !d->ref.deref())
79 }
else if (d->ref.loadRelaxed() != 1) {
86 void reset(T *t =
nullptr)
noexcept
88 if (d && !d->ref.deref())
95 constexpr T *
take()
noexcept
97 return std::exchange(d,
nullptr).get();
102 return d && d->ref.loadRelaxed() != 1;
107 qt_ptr_swap(d, other.d);
113 constexpr const T &
operator*()
const {
return *(d.get()); }
114 constexpr const T *
operator->()
const {
return d.get(); }
116 constexpr T *
data()
noexcept {
return d.get(); }
117 constexpr const T *
data()
const noexcept {
return d.get(); }
119 constexpr explicit operator bool()
const noexcept {
return d.get(); }
124 {
return lhs.d == rhs.d; }
128 {
return Qt::compareThreeWay(lhs.d, rhs.d); }
131 constexpr friend bool
133 {
return lhs.
d ==
nullptr; }
QExplicitlySharedDataPointerV2(const QExplicitlySharedDataPointerV2 &other) noexcept
void reset(T *t=nullptr) noexcept
constexpr void swap(QExplicitlySharedDataPointerV2 &other) noexcept
constexpr T * operator->()
constexpr const T * data() const noexcept
QExplicitlySharedDataPointerV2 & operator=(const QExplicitlySharedDataPointerV2 &other) noexcept
constexpr QExplicitlySharedDataPointerV2() noexcept
QExplicitlySharedDataPointerV2(T *t, QAdoptSharedDataTag) noexcept
QExplicitlySharedDataPointerV2 & operator=(QExplicitlySharedDataPointerV2 &&other) noexcept
constexpr friend Qt::strong_ordering compareThreeWay(const QExplicitlySharedDataPointerV2 &lhs, const QExplicitlySharedDataPointerV2 &rhs) noexcept
constexpr const T & operator*() const
constexpr T & operator*()
constexpr const T * operator->() const
QExplicitlySharedDataPointerV2(T *t) noexcept
constexpr T * data() noexcept
constexpr T * take() noexcept
~QExplicitlySharedDataPointerV2()
constexpr operator bool() const noexcept
QExplicitlySharedDataPointerV2(QExplicitlySharedDataPointerV2 &&other) noexcept
constexpr friend bool comparesEqual(const QExplicitlySharedDataPointerV2 &lhs, const QExplicitlySharedDataPointerV2 &rhs) noexcept
bool isShared() const noexcept
constexpr void swap(QExplicitlySharedDataPointerV2< T > &lhs, QExplicitlySharedDataPointerV2< T > &rhs) noexcept