34 DECLARE_MARKOBJECTS(QQmlValueTypeWrapper);
37 const void *data, QMetaType metaType,
const QMetaObject *metaObject,
38 Object *object,
int property, Flags flags)
40 ReferenceObject::init(object, property, flags | IsDirty);
41 setMetaType(metaType);
42 setMetaObject(metaObject);
47 QQmlValueTypeWrapper *detached()
const;
51 QMetaType metaType()
const
53 Q_ASSERT(m_metaType !=
nullptr);
54 return QMetaType(m_metaType);
57 void setGadgetPtr(
void *gadgetPtr) { m_gadgetPtr = gadgetPtr; }
58 void *gadgetPtr()
const {
return m_gadgetPtr; }
60 const QMetaObject *metaObject()
const {
return m_metaObject; }
62 void setData(
const void *data)
64 const QMetaType type = metaType();
65 void *gadget = gadgetPtr();
67 type.destruct(gadget);
69 gadget = ::operator
new(type.sizeOf());
72 type.construct(gadget, data);
75 QVariant toVariant()
const;
77 void *storagePointer();
78 bool setVariant(
const QVariant &variant);
81 bool writeBack(
int propertyIndex = QV4::ReferenceObject::AllProperties);
84 void setMetaObject(
const QMetaObject *metaObject) { m_metaObject = metaObject; }
85 void setMetaType(QMetaType metaType)
87 Q_ASSERT(metaType.isValid());
88 m_metaType = metaType.iface();
92 const QtPrivate::QMetaTypeInterface *m_metaType;
93 const QMetaObject *m_metaObject;