5#ifndef QBINDINGSTORAGE_H
6#define QBINDINGSTORAGE_H
8#include <QtCore/qglobal.h>
9#include <QtCore/qnamespace.h>
13template <
typename Class,
typename T,
auto Offset,
auto Setter,
auto Signal,
auto Getter>
14class QObjectCompatProperty;
20class QPropertyBindingData;
43 mutable QBindingStorageData *d =
nullptr;
44 QBindingStatus *bindingStatus =
nullptr;
46 template<
typename Class,
typename T,
auto Offset,
auto Setter,
auto Signal,
auto Getter>
47 friend class QObjectCompatProperty;
48 friend class QObjectPrivate;
49 friend class QtPrivate::QPropertyBindingData;
54 bool isEmpty() {
return !d; }
55 bool isValid()
const noexcept {
return bindingStatus; }
57 const QBindingStatus *status(QtPrivate::QBindingStatusAccessToken)
const;
59 void registerDependency(
const QUntypedPropertyData *data)
const
61 if (!bindingStatus || !bindingStatus->currentlyEvaluatingBinding)
63 registerDependency_helper(data);
65 QtPrivate::QPropertyBindingData *bindingData(
const QUntypedPropertyData *data)
const
69 return bindingData_helper(data);
72#if QT_CORE_REMOVED_SINCE(6
, 2
)
73 void maybeUpdateBindingAndRegister(
const QUntypedPropertyData *data)
const { registerDependency(data); }
76 QtPrivate::QPropertyBindingData *bindingData(QUntypedPropertyData *data,
bool create)
80 return bindingData_helper(data, create);
83 void reinitAfterThreadMove();
85 void registerDependency_helper(
const QUntypedPropertyData *data)
const;
86#if QT_CORE_REMOVED_SINCE(6
, 2
)
88 void maybeUpdateBindingAndRegister_helper(
const QUntypedPropertyData *data)
const;
90 QtPrivate::QPropertyBindingData *bindingData_helper(
const QUntypedPropertyData *data)
const;
91 QtPrivate::QPropertyBindingData *bindingData_helper(QUntypedPropertyData *data,
bool create);
void addEvent(const QPostEvent &ev)
qsizetype insertionOffset
QPostEvent(QObject *r, QEvent *e, int p)
QScopedScopeLevelCounter(QThreadData *threadData)
~QScopedScopeLevelCounter()
QStack< QEventLoop * > eventLoops
QAtomicPointer< QAbstractEventDispatcher > eventDispatcher
QtPrivate::BindingStatusOrList m_statusOrPendingObjects
static QThreadData * current()
void reuseBindingStatusForNewNativeThread()
QThreadData(int initialRefCount=1)
bool requiresCoreApplication
static void clearCurrentThreadData()
QAtomicPointer< void > threadId
static QThreadData * get2(QThread *thread)
QAbstractEventDispatcher * ensureEventDispatcher()
QPostEventList postEventList
bool hasEventDispatcher() const
QAtomicPointer< QThread > thread
QAbstractEventDispatcher * createEventDispatcher()
static void setCurrentThread(QThread *)
static QAbstractEventDispatcher * createEventDispatcher(QThreadData *data)
QThreadPrivate(QThreadData *d=nullptr)
void removeObjectWithPendingBindingStatusChange(QObject *)
QBindingStatus * m_bindingStatus
QBindingStatus * bindingStatus()
QBindingStatus * addObjectWithPendingBindingStatusChange(QObject *)
List * list() const noexcept
static bool isBindingStatus(quintptr data) noexcept
static bool isNull(quintptr data) noexcept
void removeObject(QObject *object)
void setStatusAndClearList(QBindingStatus *status) noexcept
constexpr BindingStatusOrList() noexcept
QBindingStatus * addObjectUnlessAlreadyStatus(QObject *object)
BindingStatusOrList(QBindingStatus *status) noexcept
QBindingStatus * bindingStatus() const noexcept
static bool isList(quintptr data) noexcept
Combined button and popup list for selecting options.
void setBindingStatus(QBindingStatus *status, QBindingStatusAccessToken)
Q_DECLARE_TYPEINFO(QPostEvent, Q_RELOCATABLE_TYPE)
bool operator<(const QPostEvent &first, const QPostEvent &second)
QtPrivate::CompatPropertySafePoint * currentCompatProperty
QPropertyDelayedNotifications * groupUpdateData
QtPrivate::BindingEvaluationState * currentlyEvaluatingBinding