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 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(
const QV4::CompiledData::Binding *binding,
const QString &name,
122 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &oldUnit,
123 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
124 const ReboundBindings &rebound);
125 void resetBindings(
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &unit,
int cuIndex,
126 const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
128 void patchBinding(
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &newUnit,
129 const QV4::CompiledData::Change &change);
132 QPointer<QObject> m_object;
133 QQmlRefPointer<QV4::ExecutableCompilationUnit> unit;
137 std::vector<StoredBinding> m_storedBindings;
138 std::vector<StoredValue> m_storedValues;
139 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)
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)