4#ifndef QDEFERREDPOINTER_P_H
5#define QDEFERREDPOINTER_P_H
17#include <private/qtqmlcompilerexports_p.h>
19#include <QtCore/private/qglobal_p.h>
20#include <QtCore/qsharedpointer.h>
66 Q_ASSERT(!m_data.isNull() || m_factory.isNull());
82 return m_data.isNull();
85 explicit operator bool() const noexcept {
return !
isNull(); }
89 [[nodiscard]] T *
get()
const {
return data(); }
101 return a.m_data ==
b.m_data;
111 return a.m_data <
b.m_data;
116 return a.m_data <=
b.m_data;
121 return a.m_data >
b.m_data;
126 return a.m_data >=
b.m_data;
129 template <
typename U>
132 return a.m_data ==
b;
135 template <
typename U>
141 template <
typename U>
147 template <
typename U>
155 return (m_factory && m_factory->isValid()) ? m_factory.data() :
nullptr;
161 void lazyLoad()
const
165 std::swap(localFactory, *
f);
166 localFactory.populate(
m_data.template constCast<std::remove_const_t<T>>());
209 bool isNull()
const {
return m_data.isNull(); }
211 explicit operator bool() const noexcept {
return !
isNull(); }
216 return a.m_data ==
b.m_data;
225 void lazyLoad()
const
228 auto factory = m_factory.toStrongRef();
231 std::swap(localFactory, *
factory);
232 localFactory.populate(
233 m_data.toStrongRef().template constCast<std::remove_const_t<T>>());
Factory * factory() const
Q_NODISCARD_CTOR QDeferredSharedPointer()=default
friend bool operator==(const QDeferredSharedPointer &a, const QDeferredSharedPointer &b)
friend bool operator==(const QDeferredSharedPointer &a, const QSharedPointer< U > &b)
Q_NODISCARD_CTOR QDeferredSharedPointer(QWeakPointer< T > data)
Q_NODISCARD_CTOR QDeferredSharedPointer(QSharedPointer< T > data)
friend size_t qHash(const QDeferredSharedPointer &ptr, size_t seed=0)
friend bool operator<(const QDeferredSharedPointer &a, const QDeferredSharedPointer &b)
friend bool operator<=(const QDeferredSharedPointer &a, const QDeferredSharedPointer &b)
friend bool operator!=(const QDeferredSharedPointer &a, const QSharedPointer< U > &b)
friend bool operator!=(const QDeferredSharedPointer &a, const QDeferredSharedPointer &b)
friend bool operator!=(const QSharedPointer< U > &a, const QDeferredSharedPointer &b)
friend bool operator>(const QDeferredSharedPointer &a, const QDeferredSharedPointer &b)
bool operator!() const noexcept
friend bool operator>=(const QDeferredSharedPointer &a, const QDeferredSharedPointer &b)
friend bool operator==(const QSharedPointer< U > &a, const QDeferredSharedPointer &b)
Q_NODISCARD_CTOR QDeferredSharedPointer(QSharedPointer< T > data, QSharedPointer< Factory > factory)
QDeferredFactory< std::remove_const_t< T > > Factory
Q_NODISCARD_CTOR QDeferredWeakPointer(const QDeferredSharedPointer< T > &strong)
QSharedPointer< T > toStrongRef() const
bool operator!() const noexcept
friend bool operator==(const QDeferredWeakPointer &a, const QDeferredWeakPointer &b)
Q_NODISCARD_CTOR QDeferredWeakPointer(QWeakPointer< T > data, QWeakPointer< Factory > factory)
QDeferredFactory< std::remove_const_t< T > > Factory
Q_NODISCARD_CTOR QDeferredWeakPointer()=default
friend bool operator!=(const QDeferredWeakPointer &a, const QDeferredWeakPointer &b)
T * data() const noexcept
Returns the value of the pointer referenced by this object.
QSharedPointer< T > toStrongRef() const
Promotes this weak reference to a strong one and returns a QSharedPointer object holding that referen...
Combined button and popup list for selecting options.
static ControlElement< T > * ptr(QWidget *widget)
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
QItemEditorFactory * factory