35 DECLARE_MARKOBJECTS(QQmlValueTypeWrapper);
38 const void *data, QMetaType metaType,
const QMetaObject *metaObject,
39 Object *object,
int property, Flags flags)
41 ReferenceObject::init(object, property, flags | IsDirty);
42 setMetaType(metaType);
43 setMetaObject(metaObject);
48 QQmlValueTypeWrapper *detached()
const;
52 QMetaType metaType()
const
54 Q_ASSERT(m_metaType !=
nullptr);
55 return QMetaType(m_metaType);
58 void setGadgetPtr(
void *gadgetPtr) { m_gadgetPtr = gadgetPtr; }
59 void *gadgetPtr()
const {
return m_gadgetPtr; }
61 const QMetaObject *metaObject()
const {
return m_metaObject; }
63 void setData(
const void *data)
65 const QMetaType type = metaType();
66 void *gadget = gadgetPtr();
68 type.destruct(gadget);
70 gadget = ::operator
new(type.sizeOf());
73 type.construct(gadget, data);
76 QVariant toVariant()
const;
78 void *storagePointer();
79 bool setVariant(
const QVariant &variant);
82 bool writeBack(
int propertyIndex = QV4::ReferenceObject::AllProperties);
85 void setMetaObject(
const QMetaObject *metaObject) { m_metaObject = metaObject; }
86 void setMetaType(QMetaType metaType)
88 Q_ASSERT(metaType.isValid());
89 m_metaType = metaType.iface();
93 const QtPrivate::QMetaTypeInterface *m_metaType;
94 const QMetaObject *m_metaObject;