61 int objectIndex,
const QString &prefix)
75 void reset(
const std::vector<QQmlRefPointer<QV4::ExecutableCompilationUnit>> &unitsToUnparent,
76 const std::vector<CompositeLevel> &internalUnits);
78 const std::vector<CompositeLevel> &internalUnits,
79 QDuplicateTracker<QObject *> *seenChildren);
84 int objectIndex,
const QV4::CompiledData::Binding *binding,
85 QDuplicateTracker<QObject *> *seenChildren);
87 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &unit,
88 int objectIndex, QDuplicateTracker<QObject *> *seenChildren);
90 const QV4::CompiledData::Binding *binding,
91 QDuplicateTracker<QObject *> *seenChildren);
96 const QV4::CompiledData::Change &change);
101 QString propertyName;
102 QQmlAnyBinding binding;
103 QPointer<QObject> sourceGuard;
108 QString propertyName;
112 struct StoredSignalHandler
115 std::unique_ptr<QQmlBoundSignal> handler;
118 void recordBindingValues(
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &unit,
119 int cuIndex, QHash<QString, QVariant> *constantValues,
120 QDuplicateTracker<QObject *> *seenChildren);
121 void resetBinding(
int objectIndex,
const QV4::CompiledData::Binding *binding,
123 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &oldUnit,
124 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
125 const ReboundBindings &rebound);
126 void resetBindings(
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &unit,
int cuIndex,
127 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
129 void patchBinding(
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
130 const QV4::CompiledData::Change &change);
133 QPointer<QObject> m_object;
134 QQmlRefPointer<QV4::ExecutableCompilationUnit> unit;
138 std::vector<StoredBinding> m_storedBindings;
139 std::vector<StoredValue> m_storedValues;
140 std::vector<StoredSignalHandler> m_storedSignalHandlers;
bool applyBindingChange(const QQmlRefPointer< QV4::ExecutableCompilationUnit > &newUnit, const QV4::CompiledData::Change &change)
void reset(const std::vector< QQmlRefPointer< QV4::ExecutableCompilationUnit > > &unitsToUnparent, const std::vector< CompositeLevel > &internalUnits)
BindingPatchContext & operator=(BindingPatchContext &&)=default
BindingPatchContext * attachedContext(const QQmlRefPointer< QV4::ExecutableCompilationUnit > &unit, const QV4::CompiledData::Binding *binding, QDuplicateTracker< QObject * > *seenChildren)
BindingPatchContext * childContext(const QString &name, QObject *object, const QQmlRefPointer< QV4::ExecutableCompilationUnit > &unit, int objectIndex, QDuplicateTracker< QObject * > *seenChildren)
BindingPatchContext(QObject *object, const QQmlRefPointer< QV4::ExecutableCompilationUnit > &unit, int objectIndex)
static void clearBindingsRecursive(QObject *object)
BindingPatchContext(BindingPatchContext &&)=default
BindingPatchContext(QObject *object, const QQmlRefPointer< QV4::ExecutableCompilationUnit > &unit, int objectIndex, const QString &prefix)
static void retireObject(QObject *object)
void stashExternalState(const std::vector< CompositeLevel > &internalUnits, QDuplicateTracker< QObject * > *seenChildren)
BindingPatchContext * childContext(const QQmlRefPointer< QV4::ExecutableCompilationUnit > &unit, int objectIndex, const QV4::CompiledData::Binding *binding, QDuplicateTracker< QObject * > *seenChildren)