59 int objectIndex,
const QString &prefix)
73 void reset(
const std::vector<QQmlRefPointer<QV4::ExecutableCompilationUnit>> &unitsToUnparent,
74 const std::vector<CompositeLevel> &internalUnits);
76 const std::vector<CompositeLevel> &internalUnits,
77 QDuplicateTracker<QObject *> *seenChildren);
82 const QV4::CompiledData::Binding *binding,
83 QDuplicateTracker<QObject *> *seenChildren);
85 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &unit,
86 int objectIndex, QDuplicateTracker<QObject *> *seenChildren);
88 const QV4::CompiledData::Binding *binding,
89 QDuplicateTracker<QObject *> *seenChildren);
94 const QV4::CompiledData::Change &change);
100 QQmlAnyBinding binding;
101 QPointer<QObject> sourceGuard;
106 QString propertyName;
110 struct StoredSignalHandler
113 std::unique_ptr<QQmlBoundSignal> handler;
116 void recordBindingValues(
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &unit,
117 int cuIndex, QHash<QString, QVariant> *constantValues,
118 QDuplicateTracker<QObject *> *seenChildren);
119 void resetBinding(
const QV4::CompiledData::Binding *binding,
const QString &name,
120 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &oldUnit,
121 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
122 const ReboundBindings &rebound);
123 void resetBindings(
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &unit,
int cuIndex,
124 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
126 void patchBinding(
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
127 const QV4::CompiledData::Change &change);
129 static void retireObject(QObject *object);
130 static void clearBindingsRecursive(QObject *object);
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 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)
BindingPatchContext(BindingPatchContext &&)=default
BindingPatchContext(QObject *object, const QQmlRefPointer< QV4::ExecutableCompilationUnit > &unit, int objectIndex, const QString &prefix)
void stashExternalState(const std::vector< CompositeLevel > &internalUnits, QDuplicateTracker< QObject * > *seenChildren)