aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsapi/qjsvalue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsapi/qjsvalue.cpp')
-rw-r--r--src/qml/jsapi/qjsvalue.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/qml/jsapi/qjsvalue.cpp b/src/qml/jsapi/qjsvalue.cpp
index ad5ab95408..ce3ab0076b 100644
--- a/src/qml/jsapi/qjsvalue.cpp
+++ b/src/qml/jsapi/qjsvalue.cpp
@@ -42,6 +42,7 @@
#include <QtCore/qdatetime.h>
#include "qjsengine.h"
#include "qjsvalue.h"
+#include "qjsprimitivevalue.h"
#include "qjsvalue_p.h"
#include "qv4value_p.h"
#include "qv4object_p.h"
@@ -857,6 +858,32 @@ QJSValue& QJSValue::operator=(const QJSValue& other)
return *this;
}
+QJSValue::QJSValue(QJSPrimitiveValue &&value)
+{
+ switch (value.type()) {
+ case QJSPrimitiveValue::Undefined:
+ d = QV4::Encode::undefined();
+ return;
+ case QJSPrimitiveValue::Null:
+ d = QV4::Encode::null();
+ return;
+ case QJSPrimitiveValue::Boolean:
+ d = QV4::Encode(value.asBoolean());
+ return;
+ case QJSPrimitiveValue::Integer:
+ d = QV4::Encode(value.asInteger());
+ return;
+ case QJSPrimitiveValue::Double:
+ d = QV4::Encode(value.asDouble());
+ return;
+ case QJSPrimitiveValue::String:
+ QJSValuePrivate::setString(this, std::move(std::get<QString>(value.d)));
+ return;
+ }
+
+ Q_UNREACHABLE();
+}
+
static bool js_equal(const QString &string, const QV4::Value &value)
{
if (String *s = value.stringValue())