18#include <private/qtqmlglobal_p.h>
19#include <private/qobject_p.h>
20#include <private/qqmlpropertyindex_p.h>
21#include <private/qv4value_p.h>
22#include <private/qv4persistent_p.h>
23#include <private/qqmlrefcount_p.h>
24#include <private/qqmlpropertycache_p.h>
31template <
class Key,
class T>
class QHash;
45class ExecutableCompilationUnit;
46namespace CompiledData {
63 static inline void init() {
64 static bool initialized =
false;
82 if (!explicitIndestructibleSet) indestructible =
false;
119 InlineBindingArraySize = 2
140 int endpointCount(
int index);
141 bool signalHasEndpoint(
int index)
const;
144 void disconnectNotifiers(DeleteNotifyList doDelete);
160 inline bool hasBindingBit(
int)
const;
162 inline void clearBindingBit(
int);
164 inline bool hasPendingBindingBit(
int index)
const;
165 inline void setPendingBindingBit(
QObject *
obj,
int);
166 inline void clearPendingBindingBit(
int);
177 QMultiHash<int, const QV4::CompiledData::Binding *>
bindings;
189 void deferData(
int objectIndex,
const QQmlRefPointer<QV4::ExecutableCompilationUnit> &,
190 const QQmlRefPointer<QQmlContextData> &);
191 void releaseDeferredData();
202 if (
priv->isDeletingChildren ||
priv->wasDeleted) {
205 }
else if (
priv->declarativeData) {
208 return createQQmlData(
priv);
217 if (
priv->isDeletingChildren ||
priv->wasDeleted)
219 if (
priv->declarativeData)
235 if (!ddata || ddata->indestructible || ddata->rootObjectInCreation)
241 QHash<QQmlAttachedPropertiesFunc, QObject *> *attachedProperties()
const;
243 static inline bool wasDeleted(
const QObject *);
246 static void markAsDeleted(
QObject *);
247 static void setQueuedForDeletion(
QObject *);
249 static inline void flushPendingBinding(
QObject *
object,
int coreIndex);
250 void flushPendingBinding(
int coreIndex);
256 return ddata->propertyCache;
257 return createPropertyCache(
object);
273 if (bindingBitsArraySize <=
offset)
276 const BindingBitsType *
bits = (bindingBitsArraySize == InlineBindingArraySize) ? bindingBitsValue : bindingBits;
283 if (bindingBitsArraySize >
offset) {
284 BindingBitsType *
bits = (bindingBitsArraySize == InlineBindingArraySize) ? bindingBitsValue : bindingBits;
292 BindingBitsType *
bits = (bindingBitsArraySize == InlineBindingArraySize) ? bindingBitsValue : bindingBits;
305 if (!
priv ||
priv->wasDeleted ||
priv->isDeletingChildren)
309 return ddata && ddata->isQueuedForDeletion;
336 if (index < list->notifiesSize)
339 if (index <= list->maximumTodoIndex) {
341 if (index < list->notifiesSize)
374 return hasBitSet(coreIndex * 2);
381 setBit(
obj, coreIndex * 2);
388 clearBit(coreIndex * 2);
396 return hasBitSet(coreIndex * 2 + 1);
403 setBit(
obj, coreIndex * 2 + 1);
410 clearBit(coreIndex * 2 + 1);
416 if (
data &&
data->hasPendingBindingBit(coreIndex))
417 data->flushPendingBinding(coreIndex);
static bool(* isSignalConnected)(QAbstractDeclarativeData *, const QObject *, int)
static int(* receivers)(QAbstractDeclarativeData *, const QObject *, int)
static void(* destroyed)(QAbstractDeclarativeData *, QObject *)
static void(* signalEmitted)(QAbstractDeclarativeData *, QObject *, int, void **)
static QObjectPrivate * get(QObject *o)
The QQmlContext class defines a context within a QML engine.
void setPendingBindingBit(QObject *obj, int)
static void flushPendingBinding(QObject *object, int coreIndex)
static QQmlPropertyCache::ConstPtr ensurePropertyCache(QObject *object)
bool hasExtendedData() const
QVector< DeferredData * > deferredData
QQmlRefPointer< QV4::ExecutableCompilationUnit > compilationUnit
QQmlPropertyCache::ConstPtr propertyCache
static QQmlData * get(const QObject *object)
quint32 hasTaintedV4Object
static bool keepAliveDuringGarbageCollection(const QObject *object)
bool signalHasEndpoint(int index) const
QQmlRefPointer< QQmlContextData > ownContext
void clearBindingBit(int)
bool hasPendingBindingBit(int index) const
std::vector< QQmlPropertyObserver > propertyObservers
quint32 explicitIndestructibleSet
quint32 hasInterceptorMetaObject
BindingBitsType * bindingBits
quint32 bindingBitsArraySize
QAtomicPointer< NotifyList > notifyList
void clearPendingBindingBit(int)
static bool wasDeleted(const QObject *)
static QQmlData * get(const QObjectPrivate *priv)
void setBindingBit(QObject *obj, int)
static QQmlData * get(QObjectPrivate *priv, bool create)
void setImplicitDestructible()
quint32 isQueuedForDeletion
static Q_ALWAYS_INLINE uint offsetForBit(int bit)
quint32 rootObjectInCreation
QQmlNotifierEndpoint * notify(int index) const
static QQmlData * get(QObject *object, bool create)
static Q_ALWAYS_INLINE BindingBitsType bitFlagForBit(int bit)
bool hasBindingBit(int) const
The QQmlEngine class provides an environment for instantiating QML components.
Combined button and popup list for selecting options.
static QDBusError::ErrorType get(const char *name)
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const void * bits
bool isIndexInConnectionMask(quint64 connectionMask, int index)
unsigned long long quint64
QQmlRefPointer< QQmlContextData > context
QQmlRefPointer< QV4::ExecutableCompilationUnit > compilationUnit
QMultiHash< int, const QV4::CompiledData::Binding * > bindings
Q_DISABLE_COPY(DeferredData)
QAtomicInteger< quint64 > connectionMask