aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsapi/qjsengine.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-12-11 13:35:53 +0100
committerUlf Hermann <ulf.hermann@qt.io>2020-12-18 17:26:51 +0100
commit6f181768a3147bbfa9a33cf2c05453365693f5b9 (patch)
tree3ff80238b5784032c86cfc1a70088e17b62a7127 /src/qml/jsapi/qjsengine.cpp
parentd5ac54da624dbaebc865c8243a5e1c33d5e1c7ba (diff)
Add a QJSManagedValue
A QJSManagedValue is a view on a QJSValue which always knows the engine the value belongs to. This allows us to implement the JavaScript semantics of the various QJSValue methods in a much more rigorous way. [ChangeLog][QtQml] The new QJSManagedValue should be used instead of QJSValue for manipulating properties and prototypes of JavaScript values, as well as for calling JavaScript functions. Change-Id: I9d445ffcf68dfa72dba9bae0818e83c80665ad66 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/jsapi/qjsengine.cpp')
-rw-r--r--src/qml/jsapi/qjsengine.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/qml/jsapi/qjsengine.cpp b/src/qml/jsapi/qjsengine.cpp
index a0e2cb2c3a..f0e3e69fbb 100644
--- a/src/qml/jsapi/qjsengine.cpp
+++ b/src/qml/jsapi/qjsengine.cpp
@@ -728,6 +728,13 @@ QJSValue QJSEngine::globalObject() const
return QJSValuePrivate::fromReturnedValue(v->asReturnedValue());
}
+QJSManagedValue QJSEngine::createManaged(QMetaType type, const void *ptr)
+{
+ QJSManagedValue result(m_v4Engine);
+ *result.d = m_v4Engine->metaTypeToJS(type.id(), ptr);
+ return result;
+}
+
/*!
* \internal
* used by QJSEngine::toScriptValue
@@ -739,6 +746,11 @@ QJSValue QJSEngine::create(int type, const void *ptr)
return QJSValuePrivate::fromReturnedValue(v->asReturnedValue());
}
+bool QJSEngine::convertManaged(const QJSManagedValue &value, int type, void *ptr)
+{
+ return QV4::ExecutionEngine::metaTypeFromJS(*value.d, type, ptr);
+}
+
/*!
\internal
convert \a value to \a type, store the result in \a ptr