diff options
Diffstat (limited to 'src/qml/jsapi/qjsvalue.cpp')
-rw-r--r-- | src/qml/jsapi/qjsvalue.cpp | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/src/qml/jsapi/qjsvalue.cpp b/src/qml/jsapi/qjsvalue.cpp index 24aa4ac5f2..c4090ac482 100644 --- a/src/qml/jsapi/qjsvalue.cpp +++ b/src/qml/jsapi/qjsvalue.cpp @@ -53,7 +53,7 @@ #include "qv4errorobject_p.h" #include "private/qv8engine_p.h" #include <private/qv4mm_p.h> -#include <private/qv4scopedvalue_p.h> +#include <private/qv4jscall_p.h> #include <private/qv4qobjectwrapper_p.h> /*! @@ -152,6 +152,13 @@ \value NullValue A null value. */ +/*! + \typedef QJSValueList + \relates QJSValue + + This is a typedef for a QList<QJSValue>. +*/ + QT_BEGIN_NAMESPACE using namespace QV4; @@ -257,7 +264,7 @@ QJSValue::QJSValue(const QJSValue& other) */ /*! - \fn QJSValue &operator=(QJSValue && other) + \fn QJSValue &QJSValue::operator=(QJSValue && other) Move-assigns \a other to this QJSValue object. */ @@ -689,21 +696,21 @@ QJSValue QJSValue::call(const QJSValueList &args) Q_ASSERT(engine); Scope scope(engine); - ScopedCallData callData(scope, args.length()); - callData->thisObject = engine->globalObject; + JSCallData jsCallData(scope, args.length()); + *jsCallData->thisObject = engine->globalObject; for (int i = 0; i < args.size(); ++i) { if (!QJSValuePrivate::checkEngine(engine, args.at(i))) { qWarning("QJSValue::call() failed: cannot call function with argument created in a different engine"); return QJSValue(); } - callData->args[i] = QJSValuePrivate::convertedToValue(engine, args.at(i)); + jsCallData->args[i] = QJSValuePrivate::convertedToValue(engine, args.at(i)); } - f->call(scope, callData); + ScopedValue result(scope, f->call(jsCallData)); if (engine->hasException) - scope.result = engine->catchException(); + result = engine->catchException(); - return QJSValue(engine, scope.result.asReturnedValue()); + return QJSValue(engine, result->asReturnedValue()); } /*! @@ -745,21 +752,21 @@ QJSValue QJSValue::callWithInstance(const QJSValue &instance, const QJSValueList return QJSValue(); } - ScopedCallData callData(scope, args.size()); - callData->thisObject = QJSValuePrivate::convertedToValue(engine, instance); + JSCallData jsCallData(scope, args.size()); + *jsCallData->thisObject = QJSValuePrivate::convertedToValue(engine, instance); for (int i = 0; i < args.size(); ++i) { if (!QJSValuePrivate::checkEngine(engine, args.at(i))) { qWarning("QJSValue::call() failed: cannot call function with argument created in a different engine"); return QJSValue(); } - callData->args[i] = QJSValuePrivate::convertedToValue(engine, args.at(i)); + jsCallData->args[i] = QJSValuePrivate::convertedToValue(engine, args.at(i)); } - f->call(scope, callData); + ScopedValue result(scope, f->call(jsCallData)); if (engine->hasException) - scope.result = engine->catchException(); + result = engine->catchException(); - return QJSValue(engine, scope.result.asReturnedValue()); + return QJSValue(engine, result->asReturnedValue()); } /*! @@ -794,20 +801,20 @@ QJSValue QJSValue::callAsConstructor(const QJSValueList &args) Q_ASSERT(engine); Scope scope(engine); - ScopedCallData callData(scope, args.size()); + JSCallData jsCallData(scope, args.size()); for (int i = 0; i < args.size(); ++i) { if (!QJSValuePrivate::checkEngine(engine, args.at(i))) { qWarning("QJSValue::callAsConstructor() failed: cannot construct function with argument created in a different engine"); return QJSValue(); } - callData->args[i] = QJSValuePrivate::convertedToValue(engine, args.at(i)); + jsCallData->args[i] = QJSValuePrivate::convertedToValue(engine, args.at(i)); } - f->construct(scope, callData); + ScopedValue result(scope, f->callAsConstructor(jsCallData)); if (engine->hasException) - scope.result = engine->catchException(); + result = engine->catchException(); - return QJSValue(engine, scope.result.asReturnedValue()); + return QJSValue(engine, result->asReturnedValue()); } #ifdef QT_DEPRECATED @@ -1242,10 +1249,7 @@ bool QJSValue::deleteProperty(const QString &name) return false; ScopedString s(scope, engine->newString(name)); - bool b = o->deleteProperty(s); - if (engine->hasException) - engine->catchException(); - return b; + return o->deleteProperty(s); } /*! |