6#include <QtQml/qqmlinfo.h>
7#include <private/qqmlbinding_p.h>
8#include <private/qqmlvaluetypeproxybinding_p.h>
9#include <private/qqmlvmemetaobject_p.h>
52 if (
data->hasBindingBit(coreIndex)) {
54 while (
b && (
b->targetPropertyIndex().coreIndex() != coreIndex ||
55 b->targetPropertyIndex().hasValueTypeIndex()))
64 Q_ASSERT(
proxy->targetPropertyIndex().coreIndex() == coreIndex);
72 proxy->m_bindings =
this;
77 data->bindings->ref.deref();
80 data->bindings =
this;
83 data->setBindingBit(
obj, coreIndex);
124 if (binding ==
this) {
125 vtproxybinding->m_bindings =
next;
140 if (
data->bindings ==
this) {
155 data->clearBindingBit(coreIndex);
207 valueType ? valueType->
coreIndex() : -1);
216 if (!
data->propertyCache) {
218 if (!
data->propertyCache)
228 QObject *
object,
int coreIndex,
bool coreIsAlias,
int valueTypeIndex)
230 auto invalidate = [
this]() {
241 for (
bool isAlias = coreIsAlias; isAlias;) {
245 if (!vme->
aliasTarget(coreIndex, &
object, &coreIndex, &aValueTypeIndex)) {
254 if (aValueTypeIndex != -1) {
258 coreIndex = aValueTypeIndex;
264 valueTypeIndex = aValueTypeIndex;
269 isAlias = propertyData->
isAlias();
275 if (!
data->propertyCache)
T * data() const noexcept
Returns a pointer to the shared data object.
QQmlPropertyIndex targetPropertyIndex() const
QTaggedPointer< QQmlAbstractBinding, NextBindingTags > m_nextBinding
void setCanUseAccessor(bool canUseAccessor)
QQmlPropertyIndex m_targetIndex
static void printBindingLoopError(const QQmlProperty &prop)
friend class QQmlValueTypeProxyBinding
void setNextBinding(QQmlAbstractBinding *)
void removeFromObject()
Remove the binding from the object.
QQmlAbstractBinding * nextBinding() const
QTaggedPointer< QObject, TargetTags > m_target
QObject * targetObject() const
void setAddedToObject(bool v)
bool isAddedToObject() const
void updateCanUseAccessor()
void addToObject()
Add this binding to object.
virtual ~QQmlAbstractBinding()
void setTarget(const QQmlProperty &)
virtual Kind kind() const =0
void getPropertyData(const QQmlPropertyData **propertyData, QQmlPropertyData *valueTypeData) const
virtual QString expression() const
static QQmlData * get(QObjectPrivate *priv, bool create)
void readProperty(QObject *target, void *property) const
QMetaType propType() const
void setCoreIndex(int idx)
void setPropType(QMetaType pt)
static Flags flagsForProperty(const QMetaProperty &)
int valueTypeIndex() const
bool hasValueTypeIndex() const
static QQmlPropertyPrivate * get(const QQmlProperty &p)
The QQmlProperty class abstracts accessing properties on objects created from QML.
QML_ANONYMOUSQObject * object
\macro QT_RESTRICTED_CAST_FROM_ASCII
QString arg(qlonglong a, int fieldwidth=0, int base=10, QChar fillChar=u' ') const
T * data() const noexcept
Combined button and popup list for selecting options.
GLboolean GLboolean GLboolean b
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
static const QQmlPropertyData * getObjectPropertyData(QObject *object, int coreIndex)
Q_QML_EXPORT QQmlInfo qmlWarning(const QObject *me)
QLatin1StringView QLatin1String