aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/v8
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-25 10:09:26 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-28 13:33:08 +0200
commit0f2cf9074d4f0220f5c707eed478f99334814789 (patch)
tree685ea2295b8728b3545523e2625a4cf65f39b9ee /src/qml/qml/v8
parent1ef957834bf9040ccd001fa6d80e483b9b21452c (diff)
Fix CallContext to not hold arguments on the C stack anymore
Change-Id: I35f46cce4f243d4b8b2bac9244f8fc26836f413b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/v8')
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions.cpp344
1 files changed, 172 insertions, 172 deletions
diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
index cd90ed770f..691c8bd9df 100644
--- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
+++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp
@@ -159,10 +159,10 @@ Returns true if \c object is a valid reference to a Qt or QML object, otherwise
*/
ReturnedValue QtObject::method_isQtObject(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount == 0)
+ if (ctx->callData->argc == 0)
return QV4::Encode(false);
- return QV4::Encode(ctx->arguments[0].as<QV4::QObjectWrapper>() != 0);
+ return QV4::Encode(ctx->callData->args[0].as<QV4::QObjectWrapper>() != 0);
}
/*!
@@ -173,14 +173,14 @@ All components should be in the range 0-1 inclusive.
*/
ReturnedValue QtObject::method_rgba(QV4::SimpleCallContext *ctx)
{
- int argCount = ctx->argumentCount;
+ int argCount = ctx->callData->argc;
if (argCount < 3 || argCount > 4)
V4THROW_ERROR("Qt.rgba(): Invalid arguments");
- double r = ctx->arguments[0].toNumber();
- double g = ctx->arguments[1].toNumber();
- double b = ctx->arguments[2].toNumber();
- double a = (argCount == 4) ? ctx->arguments[3].toNumber() : 1;
+ double r = ctx->callData->args[0].toNumber();
+ double g = ctx->callData->args[1].toNumber();
+ double b = ctx->callData->args[2].toNumber();
+ double a = (argCount == 4) ? ctx->callData->args[3].toNumber() : 1;
if (r < 0.0) r=0.0;
if (r > 1.0) r=1.0;
@@ -202,14 +202,14 @@ All components should be in the range 0-1 inclusive.
*/
ReturnedValue QtObject::method_hsla(QV4::SimpleCallContext *ctx)
{
- int argCount = ctx->argumentCount;
+ int argCount = ctx->callData->argc;
if (argCount < 3 || argCount > 4)
V4THROW_ERROR("Qt.hsla(): Invalid arguments");
- double h = ctx->arguments[0].toNumber();
- double s = ctx->arguments[1].toNumber();
- double l = ctx->arguments[2].toNumber();
- double a = (argCount == 4) ? ctx->arguments[3].toNumber() : 1;
+ double h = ctx->callData->args[0].toNumber();
+ double s = ctx->callData->args[1].toNumber();
+ double l = ctx->callData->args[2].toNumber();
+ double a = (argCount == 4) ? ctx->callData->args[3].toNumber() : 1;
if (h < 0.0) h=0.0;
if (h > 1.0) h=1.0;
@@ -233,14 +233,14 @@ basic type.
*/
ReturnedValue QtObject::method_colorEqual(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 2)
+ if (ctx->callData->argc != 2)
V4THROW_ERROR("Qt.colorEqual(): Invalid arguments");
bool ok = false;
QV8Engine *v8engine = ctx->engine->v8Engine;
- QVariant lhs = v8engine->toVariant(ctx->arguments[0], -1);
+ QVariant lhs = v8engine->toVariant(ctx->callData->args[0], -1);
if (lhs.userType() == QVariant::String) {
lhs = QQmlStringConverters::colorFromString(lhs.toString(), &ok);
if (!ok) {
@@ -250,7 +250,7 @@ ReturnedValue QtObject::method_colorEqual(QV4::SimpleCallContext *ctx)
V4THROW_ERROR("Qt.colorEqual(): Invalid arguments");
}
- QVariant rhs = v8engine->toVariant(ctx->arguments[1], -1);
+ QVariant rhs = v8engine->toVariant(ctx->callData->args[1], -1);
if (rhs.userType() == QVariant::String) {
rhs = QQmlStringConverters::colorFromString(rhs.toString(), &ok);
if (!ok) {
@@ -273,13 +273,13 @@ The returned object has \c x, \c y, \c width and \c height attributes with the g
*/
ReturnedValue QtObject::method_rect(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 4)
+ if (ctx->callData->argc != 4)
V4THROW_ERROR("Qt.rect(): Invalid arguments");
- double x = ctx->arguments[0].toNumber();
- double y = ctx->arguments[1].toNumber();
- double w = ctx->arguments[2].toNumber();
- double h = ctx->arguments[3].toNumber();
+ double x = ctx->callData->args[0].toNumber();
+ double y = ctx->callData->args[1].toNumber();
+ double w = ctx->callData->args[2].toNumber();
+ double h = ctx->callData->args[3].toNumber();
return ctx->engine->v8Engine->fromVariant(QVariant::fromValue(QRectF(x, y, w, h)));
}
@@ -290,11 +290,11 @@ Returns a Point with the specified \c x and \c y coordinates.
*/
ReturnedValue QtObject::method_point(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 2)
+ if (ctx->callData->argc != 2)
V4THROW_ERROR("Qt.point(): Invalid arguments");
- double x = ctx->arguments[0].toNumber();
- double y = ctx->arguments[1].toNumber();
+ double x = ctx->callData->args[0].toNumber();
+ double y = ctx->callData->args[1].toNumber();
return ctx->engine->v8Engine->fromVariant(QVariant::fromValue(QPointF(x, y)));
}
@@ -305,11 +305,11 @@ Returns a Size with the specified \c width and \c height.
*/
ReturnedValue QtObject::method_size(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 2)
+ if (ctx->callData->argc != 2)
V4THROW_ERROR("Qt.size(): Invalid arguments");
- double w = ctx->arguments[0].toNumber();
- double h = ctx->arguments[1].toNumber();
+ double w = ctx->callData->args[0].toNumber();
+ double h = ctx->callData->args[1].toNumber();
return ctx->engine->v8Engine->fromVariant(QVariant::fromValue(QSizeF(w, h)));
}
@@ -324,12 +324,12 @@ Invalid keys will be ignored.
*/
ReturnedValue QtObject::method_font(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1 || !ctx->arguments[0].isObject())
+ if (ctx->callData->argc != 1 || !ctx->callData->args[0].isObject())
V4THROW_ERROR("Qt.font(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
bool ok = false;
- QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QFont, QQmlV4Handle(ctx->arguments[0]), v8engine, &ok);
+ QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QFont, QQmlV4Handle(ctx->callData->args[0]), v8engine, &ok);
if (!ok)
V4THROW_ERROR("Qt.font(): Invalid argument: no valid font subproperties specified");
return v8engine->fromVariant(v);
@@ -343,12 +343,12 @@ Returns a Vector2D with the specified \c x and \c y.
*/
ReturnedValue QtObject::method_vector2d(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 2)
+ if (ctx->callData->argc != 2)
V4THROW_ERROR("Qt.vector2d(): Invalid arguments");
float xy[3]; // qvector2d uses float internally
- xy[0] = ctx->arguments[0].toNumber();
- xy[1] = ctx->arguments[1].toNumber();
+ xy[0] = ctx->callData->args[0].toNumber();
+ xy[1] = ctx->callData->args[1].toNumber();
const void *params[] = { xy };
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -361,13 +361,13 @@ Returns a Vector3D with the specified \c x, \c y and \c z.
*/
ReturnedValue QtObject::method_vector3d(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 3)
+ if (ctx->callData->argc != 3)
V4THROW_ERROR("Qt.vector3d(): Invalid arguments");
float xyz[3]; // qvector3d uses float internally
- xyz[0] = ctx->arguments[0].toNumber();
- xyz[1] = ctx->arguments[1].toNumber();
- xyz[2] = ctx->arguments[2].toNumber();
+ xyz[0] = ctx->callData->args[0].toNumber();
+ xyz[1] = ctx->callData->args[1].toNumber();
+ xyz[2] = ctx->callData->args[2].toNumber();
const void *params[] = { xyz };
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -380,14 +380,14 @@ Returns a Vector4D with the specified \c x, \c y, \c z and \c w.
*/
ReturnedValue QtObject::method_vector4d(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 4)
+ if (ctx->callData->argc != 4)
V4THROW_ERROR("Qt.vector4d(): Invalid arguments");
float xyzw[4]; // qvector4d uses float internally
- xyzw[0] = ctx->arguments[0].toNumber();
- xyzw[1] = ctx->arguments[1].toNumber();
- xyzw[2] = ctx->arguments[2].toNumber();
- xyzw[3] = ctx->arguments[3].toNumber();
+ xyzw[0] = ctx->callData->args[0].toNumber();
+ xyzw[1] = ctx->callData->args[1].toNumber();
+ xyzw[2] = ctx->callData->args[2].toNumber();
+ xyzw[3] = ctx->callData->args[3].toNumber();
const void *params[] = { xyzw };
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -400,14 +400,14 @@ Returns a Quaternion with the specified \c scalar, \c x, \c y, and \c z.
*/
ReturnedValue QtObject::method_quaternion(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 4)
+ if (ctx->callData->argc != 4)
V4THROW_ERROR("Qt.quaternion(): Invalid arguments");
qreal sxyz[4]; // qquaternion uses qreal internally
- sxyz[0] = ctx->arguments[0].toNumber();
- sxyz[1] = ctx->arguments[1].toNumber();
- sxyz[2] = ctx->arguments[2].toNumber();
- sxyz[3] = ctx->arguments[3].toNumber();
+ sxyz[0] = ctx->callData->args[0].toNumber();
+ sxyz[1] = ctx->callData->args[1].toNumber();
+ sxyz[2] = ctx->callData->args[2].toNumber();
+ sxyz[3] = ctx->callData->args[3].toNumber();
const void *params[] = { sxyz };
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -425,34 +425,34 @@ ReturnedValue QtObject::method_matrix4x4(QV4::SimpleCallContext *ctx)
{
QV8Engine *v8engine = ctx->engine->v8Engine;
- if (ctx->argumentCount == 1 && ctx->arguments[0].isObject()) {
+ if (ctx->callData->argc == 1 && ctx->callData->args[0].isObject()) {
bool ok = false;
- QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QMatrix4x4, QQmlV4Handle(ctx->arguments[0]), v8engine, &ok);
+ QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QMatrix4x4, QQmlV4Handle(ctx->callData->args[0]), v8engine, &ok);
if (!ok)
V4THROW_ERROR("Qt.matrix4x4(): Invalid argument: not a valid matrix4x4 values array");
return v8engine->fromVariant(v);
}
- if (ctx->argumentCount != 16)
+ if (ctx->callData->argc != 16)
V4THROW_ERROR("Qt.matrix4x4(): Invalid arguments");
qreal vals[16]; // qmatrix4x4 uses qreal internally
- vals[0] = ctx->arguments[0].toNumber();
- vals[1] = ctx->arguments[1].toNumber();
- vals[2] = ctx->arguments[2].toNumber();
- vals[3] = ctx->arguments[3].toNumber();
- vals[4] = ctx->arguments[4].toNumber();
- vals[5] = ctx->arguments[5].toNumber();
- vals[6] = ctx->arguments[6].toNumber();
- vals[7] = ctx->arguments[7].toNumber();
- vals[8] = ctx->arguments[8].toNumber();
- vals[9] = ctx->arguments[9].toNumber();
- vals[10] = ctx->arguments[10].toNumber();
- vals[11] = ctx->arguments[11].toNumber();
- vals[12] = ctx->arguments[12].toNumber();
- vals[13] = ctx->arguments[13].toNumber();
- vals[14] = ctx->arguments[14].toNumber();
- vals[15] = ctx->arguments[15].toNumber();
+ vals[0] = ctx->callData->args[0].toNumber();
+ vals[1] = ctx->callData->args[1].toNumber();
+ vals[2] = ctx->callData->args[2].toNumber();
+ vals[3] = ctx->callData->args[3].toNumber();
+ vals[4] = ctx->callData->args[4].toNumber();
+ vals[5] = ctx->callData->args[5].toNumber();
+ vals[6] = ctx->callData->args[6].toNumber();
+ vals[7] = ctx->callData->args[7].toNumber();
+ vals[8] = ctx->callData->args[8].toNumber();
+ vals[9] = ctx->callData->args[9].toNumber();
+ vals[10] = ctx->callData->args[10].toNumber();
+ vals[11] = ctx->callData->args[11].toNumber();
+ vals[12] = ctx->callData->args[12].toNumber();
+ vals[13] = ctx->callData->args[13].toNumber();
+ vals[14] = ctx->callData->args[14].toNumber();
+ vals[15] = ctx->callData->args[15].toNumber();
const void *params[] = { vals };
return v8engine->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QMatrix4x4, 1, params));
@@ -474,11 +474,11 @@ If \c factor is not supplied, returns a color 50% lighter than \c baseColor (fac
*/
ReturnedValue QtObject::method_lighter(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1 && ctx->argumentCount != 2)
+ if (ctx->callData->argc != 1 && ctx->callData->argc != 2)
V4THROW_ERROR("Qt.lighter(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
- QVariant v = v8engine->toVariant(ctx->arguments[0], -1);
+ QVariant v = v8engine->toVariant(ctx->callData->args[0], -1);
if (v.userType() == QVariant::String) {
bool ok = false;
v = QQmlStringConverters::colorFromString(v.toString(), &ok);
@@ -490,8 +490,8 @@ ReturnedValue QtObject::method_lighter(QV4::SimpleCallContext *ctx)
}
qreal factor = 1.5;
- if (ctx->argumentCount == 2)
- factor = ctx->arguments[1].toNumber();
+ if (ctx->callData->argc == 2)
+ factor = ctx->callData->args[1].toNumber();
return v8engine->fromVariant(QQml_colorProvider()->lighter(v, factor));
}
@@ -513,11 +513,11 @@ If \c factor is not supplied, returns a color 50% darker than \c baseColor (fact
*/
ReturnedValue QtObject::method_darker(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1 && ctx->argumentCount != 2)
+ if (ctx->callData->argc != 1 && ctx->callData->argc != 2)
V4THROW_ERROR("Qt.darker(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
- QVariant v = v8engine->toVariant(ctx->arguments[0], -1);
+ QVariant v = v8engine->toVariant(ctx->callData->args[0], -1);
if (v.userType() == QVariant::String) {
bool ok = false;
v = QQmlStringConverters::colorFromString(v.toString(), &ok);
@@ -529,8 +529,8 @@ ReturnedValue QtObject::method_darker(QV4::SimpleCallContext *ctx)
}
qreal factor = 2.0;
- if (ctx->argumentCount == 2)
- factor = ctx->arguments[1].toNumber();
+ if (ctx->callData->argc == 2)
+ factor = ctx->callData->args[1].toNumber();
return v8engine->fromVariant(QQml_colorProvider()->darker(v, factor));
}
@@ -561,13 +561,13 @@ ReturnedValue QtObject::method_darker(QV4::SimpleCallContext *ctx)
*/
ReturnedValue QtObject::method_tint(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 2)
+ if (ctx->callData->argc != 2)
V4THROW_ERROR("Qt.tint(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
// base color
- QVariant v1 = v8engine->toVariant(ctx->arguments[0], -1);
+ QVariant v1 = v8engine->toVariant(ctx->callData->args[0], -1);
if (v1.userType() == QVariant::String) {
bool ok = false;
v1 = QQmlStringConverters::colorFromString(v1.toString(), &ok);
@@ -579,7 +579,7 @@ ReturnedValue QtObject::method_tint(QV4::SimpleCallContext *ctx)
}
// tint color
- QVariant v2 = v8engine->toVariant(ctx->arguments[1], -1);
+ QVariant v2 = v8engine->toVariant(ctx->callData->args[1], -1);
if (v2.userType() == QVariant::String) {
bool ok = false;
v2 = QQmlStringConverters::colorFromString(v2.toString(), &ok);
@@ -611,20 +611,20 @@ If \a format is not specified, \a date is formatted using
*/
ReturnedValue QtObject::method_formatDate(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 1 || ctx->argumentCount > 2)
+ if (ctx->callData->argc < 1 || ctx->callData->argc > 2)
V4THROW_ERROR("Qt.formatDate(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate;
- QDate date = v8engine->toVariant(ctx->arguments[0], -1).toDateTime().date();
+ QDate date = v8engine->toVariant(ctx->callData->args[0], -1).toDateTime().date();
QString formattedDate;
- if (ctx->argumentCount == 2) {
- if (String *s = ctx->arguments[1].asString()) {
+ if (ctx->callData->argc == 2) {
+ if (String *s = ctx->callData->args[1].asString()) {
QString format = s->toQString();
formattedDate = date.toString(format);
- } else if (ctx->arguments[1].isNumber()) {
- quint32 intFormat = ctx->arguments[1].asDouble();
+ } else if (ctx->callData->args[1].isNumber()) {
+ quint32 intFormat = ctx->callData->args[1].asDouble();
Qt::DateFormat format = Qt::DateFormat(intFormat);
formattedDate = date.toString(format);
} else {
@@ -654,26 +654,26 @@ If \a format is not specified, \a time is formatted using
*/
ReturnedValue QtObject::method_formatTime(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 1 || ctx->argumentCount > 2)
+ if (ctx->callData->argc < 1 || ctx->callData->argc > 2)
V4THROW_ERROR("Qt.formatTime(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
- QVariant argVariant = v8engine->toVariant(ctx->arguments[0], -1);
+ QVariant argVariant = v8engine->toVariant(ctx->callData->args[0], -1);
QTime time;
- if (ctx->arguments[0].asDateObject() || (argVariant.type() == QVariant::String))
+ if (ctx->callData->args[0].asDateObject() || (argVariant.type() == QVariant::String))
time = argVariant.toDateTime().time();
else // if (argVariant.type() == QVariant::Time), or invalid.
time = argVariant.toTime();
Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate;
QString formattedTime;
- if (ctx->argumentCount == 2) {
- if (String *s = ctx->arguments[1].asString()) {
+ if (ctx->callData->argc == 2) {
+ if (String *s = ctx->callData->args[1].asString()) {
QString format = s->toQString();
formattedTime = time.toString(format);
- } else if (ctx->arguments[1].isNumber()) {
- quint32 intFormat = ctx->arguments[1].asDouble();
+ } else if (ctx->callData->args[1].isNumber()) {
+ quint32 intFormat = ctx->callData->args[1].asDouble();
Qt::DateFormat format = Qt::DateFormat(intFormat);
formattedTime = time.toString(format);
} else {
@@ -778,20 +778,20 @@ with the \a format values below to produce the following results:
*/
ReturnedValue QtObject::method_formatDateTime(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 1 || ctx->argumentCount > 2)
+ if (ctx->callData->argc < 1 || ctx->callData->argc > 2)
V4THROW_ERROR("Qt.formatDateTime(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate;
- QDateTime dt = v8engine->toVariant(ctx->arguments[0], -1).toDateTime();
+ QDateTime dt = v8engine->toVariant(ctx->callData->args[0], -1).toDateTime();
QString formattedDt;
- if (ctx->argumentCount == 2) {
- if (String *s = ctx->arguments[1].asString()) {
+ if (ctx->callData->argc == 2) {
+ if (String *s = ctx->callData->args[1].asString()) {
QString format = s->toQString();
formattedDt = dt.toString(format);
- } else if (ctx->arguments[1].isNumber()) {
- quint32 intFormat = ctx->arguments[1].asDouble();
+ } else if (ctx->callData->args[1].isNumber()) {
+ quint32 intFormat = ctx->callData->args[1].asDouble();
Qt::DateFormat format = Qt::DateFormat(intFormat);
formattedDt = dt.toString(format);
} else {
@@ -810,7 +810,7 @@ Attempts to open the specified \c target url in an external application, based o
*/
ReturnedValue QtObject::method_openUrlExternally(QV4::SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1)
+ if (ctx->callData->argc != 1)
return QV4::Encode(false);
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -827,7 +827,7 @@ ReturnedValue QtObject::method_resolvedUrl(QV4::SimpleCallContext *ctx)
{
QV8Engine *v8engine = ctx->engine->v8Engine;
- QUrl url = v8engine->toVariant(ctx->arguments[0], -1).toUrl();
+ QUrl url = v8engine->toVariant(ctx->callData->args[0], -1).toUrl();
QQmlEngine *e = v8engine->engine();
QQmlEnginePrivate *p = 0;
if (e) p = QQmlEnginePrivate::get(e);
@@ -848,7 +848,7 @@ Returns a list of the font families available to the application.
*/
ReturnedValue QtObject::method_fontFamilies(SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 0)
+ if (ctx->callData->argc != 0)
V4THROW_ERROR("Qt.fontFamilies(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -861,10 +861,10 @@ Returns a hex string of the md5 hash of \c data.
*/
ReturnedValue QtObject::method_md5(SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1)
+ if (ctx->callData->argc != 1)
V4THROW_ERROR("Qt.md5(): Invalid arguments");
- QByteArray data = ctx->arguments[0].toQStringNoThrow().toUtf8();
+ QByteArray data = ctx->callData->args[0].toQStringNoThrow().toUtf8();
QByteArray result = QCryptographicHash::hash(data, QCryptographicHash::Md5);
return Value::fromString(ctx, QLatin1String(result.toHex())).asReturnedValue();
}
@@ -875,10 +875,10 @@ Binary to ASCII - this function returns a base64 encoding of \c data.
*/
ReturnedValue QtObject::method_btoa(SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1)
+ if (ctx->callData->argc != 1)
V4THROW_ERROR("Qt.btoa(): Invalid arguments");
- QByteArray data = ctx->arguments[0].toQStringNoThrow().toUtf8();
+ QByteArray data = ctx->callData->args[0].toQStringNoThrow().toUtf8();
return Value::fromString(ctx, QLatin1String(data.toBase64())).asReturnedValue();
}
@@ -889,10 +889,10 @@ ASCII to binary - this function returns a base64 decoding of \c data.
*/
ReturnedValue QtObject::method_atob(SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1)
+ if (ctx->callData->argc != 1)
V4THROW_ERROR("Qt.atob(): Invalid arguments");
- QByteArray data = ctx->arguments[0].toQStringNoThrow().toLatin1();
+ QByteArray data = ctx->callData->args[0].toQStringNoThrow().toLatin1();
return Value::fromString(ctx, QString::fromUtf8(QByteArray::fromBase64(data))).asReturnedValue();
}
@@ -939,7 +939,7 @@ See \l {Dynamic QML Object Creation from JavaScript} for more information on usi
ReturnedValue QtObject::method_createQmlObject(SimpleCallContext *ctx)
{
Scope scope(ctx);
- if (ctx->argumentCount < 2 || ctx->argumentCount > 3)
+ if (ctx->callData->argc < 2 || ctx->callData->argc > 3)
V4THROW_ERROR("Qt.createQmlObject(): Invalid arguments");
struct Error {
@@ -979,13 +979,13 @@ ReturnedValue QtObject::method_createQmlObject(SimpleCallContext *ctx)
effectiveContext = context->asQQmlContext();
Q_ASSERT(context && effectiveContext);
- QString qml = ctx->arguments[0].toQStringNoThrow();
+ QString qml = ctx->callData->args[0].toQStringNoThrow();
if (qml.isEmpty())
return QV4::Encode::null();
QUrl url;
- if (ctx->argumentCount > 2)
- url = QUrl(ctx->arguments[2].toQStringNoThrow());
+ if (ctx->callData->argc > 2)
+ url = QUrl(ctx->callData->args[2].toQStringNoThrow());
else
url = QUrl(QLatin1String("inline"));
@@ -993,7 +993,7 @@ ReturnedValue QtObject::method_createQmlObject(SimpleCallContext *ctx)
url = context->resolvedUrl(url);
QObject *parentArg = 0;
- QV4::Scoped<QV4::QObjectWrapper> qobjectWrapper(scope, ctx->arguments[1]);
+ QV4::Scoped<QV4::QObjectWrapper> qobjectWrapper(scope, ctx->callData->args[1]);
if (!!qobjectWrapper)
parentArg = qobjectWrapper->object();
if (!parentArg)
@@ -1073,7 +1073,7 @@ ReturnedValue QtObject::method_createComponent(SimpleCallContext *ctx)
{
const QString invalidArgs = QStringLiteral("Qt.createComponent(): Invalid arguments");
const QString invalidParent = QStringLiteral("Qt.createComponent(): Invalid parent object");
- if (ctx->argumentCount < 1 || ctx->argumentCount > 3)
+ if (ctx->callData->argc < 1 || ctx->callData->argc > 3)
ctx->throwError(invalidArgs);
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -1085,7 +1085,7 @@ ReturnedValue QtObject::method_createComponent(SimpleCallContext *ctx)
effectiveContext = 0;
Q_ASSERT(context);
- QString arg = ctx->arguments[0].toQStringNoThrow();
+ QString arg = ctx->callData->args[0].toQStringNoThrow();
if (arg.isEmpty())
return QV4::Encode::null();
@@ -1093,23 +1093,23 @@ ReturnedValue QtObject::method_createComponent(SimpleCallContext *ctx)
QObject *parentArg = 0;
int consumedCount = 1;
- if (ctx->argumentCount > 1) {
- Value lastArg = ctx->arguments[ctx->argumentCount-1];
+ if (ctx->callData->argc > 1) {
+ Value lastArg = ctx->callData->args[ctx->callData->argc-1];
// The second argument could be the mode enum
- if (ctx->arguments[1].isInteger()) {
- int mode = ctx->arguments[1].integerValue();
+ if (ctx->callData->args[1].isInteger()) {
+ int mode = ctx->callData->args[1].integerValue();
if (mode != int(QQmlComponent::PreferSynchronous) && mode != int(QQmlComponent::Asynchronous))
ctx->throwError(invalidArgs);
compileMode = QQmlComponent::CompilationMode(mode);
consumedCount += 1;
} else {
// The second argument could be the parent only if there are exactly two args
- if ((ctx->argumentCount != 2) || !(lastArg.isObject() || lastArg.isNull()))
+ if ((ctx->callData->argc != 2) || !(lastArg.isObject() || lastArg.isNull()))
ctx->throwError(invalidArgs);
}
- if (consumedCount < ctx->argumentCount) {
+ if (consumedCount < ctx->callData->argc) {
if (lastArg.isObject()) {
if (QV4::QObjectWrapper *qobjectWrapper = lastArg.as<QV4::QObjectWrapper>())
parentArg = qobjectWrapper->object();
@@ -1155,14 +1155,14 @@ ReturnedValue QtObject::method_createComponent(SimpleCallContext *ctx)
ReturnedValue QtObject::method_locale(SimpleCallContext *ctx)
{
QString code;
- if (ctx->argumentCount > 1)
+ if (ctx->callData->argc > 1)
V4THROW_ERROR("locale() requires 0 or 1 argument");
- if (ctx->argumentCount == 1 && !ctx->arguments[0].isString())
+ if (ctx->callData->argc == 1 && !ctx->callData->args[0].isString())
V4THROW_TYPE("locale(): argument (locale code) must be a string");
QV8Engine *v8engine = ctx->engine->v8Engine;
- if (ctx->argumentCount == 1)
- code = ctx->arguments[0].toQStringNoThrow();
+ if (ctx->callData->argc == 1)
+ code = ctx->callData->args[0].toQStringNoThrow();
return QQmlLocale::locale(v8engine, code);
}
@@ -1248,9 +1248,9 @@ DEFINE_MANAGED_VTABLE(BindingFunction);
*/
ReturnedValue QtObject::method_binding(SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1)
+ if (ctx->callData->argc != 1)
V4THROW_ERROR("binding() requires 1 argument");
- QV4::FunctionObject *f = ctx->arguments[0].asFunctionObject();
+ QV4::FunctionObject *f = ctx->callData->args[0].asFunctionObject();
if (!f)
V4THROW_TYPE("binding(): argument (binding expression) must be a function");
@@ -1261,7 +1261,7 @@ ReturnedValue QtObject::method_binding(SimpleCallContext *ctx)
ReturnedValue QtObject::method_get_platform(SimpleCallContext *ctx)
{
// ### inefficient. Should be just a value based getter
- Object *o = ctx->thisObject.asObject();
+ Object *o = ctx->callData->thisObject.asObject();
if (!o)
ctx->throwTypeError();
QtObject *qt = o->as<QtObject>();
@@ -1278,7 +1278,7 @@ ReturnedValue QtObject::method_get_platform(SimpleCallContext *ctx)
ReturnedValue QtObject::method_get_application(SimpleCallContext *ctx)
{
// ### inefficient. Should be just a value based getter
- Object *o = ctx->thisObject.asObject();
+ Object *o = ctx->callData->thisObject.asObject();
if (!o)
ctx->throwTypeError();
QtObject *qt = o->as<QtObject>();
@@ -1360,11 +1360,11 @@ static QV4::ReturnedValue writeToConsole(ConsoleLogTypes logType, SimpleCallCont
QString result;
QV4::ExecutionEngine *v4 = ctx->engine;
- for (int i = 0; i < ctx->argumentCount; ++i) {
+ for (int i = 0; i < ctx->callData->argc; ++i) {
if (i != 0)
result.append(QLatin1Char(' '));
- QV4::Value value = ctx->arguments[i];
+ QV4::Value value = ctx->callData->args[i];
if (value.asArrayObject())
result.append(QStringLiteral("[") + value.toQStringNoThrow() + QStringLiteral("]"));
else
@@ -1458,24 +1458,24 @@ QV4::ReturnedValue ConsoleObject::method_profileEnd(SimpleCallContext *ctx)
QV4::ReturnedValue ConsoleObject::method_time(SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1)
+ if (ctx->callData->argc != 1)
V4THROW_ERROR("console.time(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
- QString name = ctx->arguments[0].toQStringNoThrow();
+ QString name = ctx->callData->args[0].toQStringNoThrow();
v8engine->startTimer(name);
return QV4::Encode::undefined();
}
QV4::ReturnedValue ConsoleObject::method_timeEnd(SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 1)
+ if (ctx->callData->argc != 1)
V4THROW_ERROR("console.time(): Invalid arguments");
QV8Engine *v8engine = ctx->engine->v8Engine;
- QString name = ctx->arguments[0].toQStringNoThrow();
+ QString name = ctx->callData->args[0].toQStringNoThrow();
bool wasRunning;
qint64 elapsed = v8engine->stopTimer(name, &wasRunning);
if (wasRunning) {
@@ -1488,8 +1488,8 @@ QV4::ReturnedValue ConsoleObject::method_count(SimpleCallContext *ctx)
{
// first argument: name to print. Ignore any additional arguments
QString name;
- if (ctx->argumentCount > 0)
- name = ctx->arguments[0].toQStringNoThrow();
+ if (ctx->callData->argc > 0)
+ name = ctx->callData->args[0].toQStringNoThrow();
QV4::ExecutionEngine *v4 = ctx->engine;
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -1509,7 +1509,7 @@ QV4::ReturnedValue ConsoleObject::method_count(SimpleCallContext *ctx)
QV4::ReturnedValue ConsoleObject::method_trace(SimpleCallContext *ctx)
{
- if (ctx->argumentCount != 0)
+ if (ctx->callData->argc != 0)
V4THROW_ERROR("console.trace(): Invalid arguments");
QV4::ExecutionEngine *v4 = ctx->engine;
@@ -1530,18 +1530,18 @@ QV4::ReturnedValue ConsoleObject::method_warn(SimpleCallContext *ctx)
QV4::ReturnedValue ConsoleObject::method_assert(SimpleCallContext *ctx)
{
- if (ctx->argumentCount == 0)
+ if (ctx->callData->argc == 0)
V4THROW_ERROR("console.assert(): Missing argument");
QV4::ExecutionEngine *v4 = ctx->engine;
- if (!ctx->arguments[0].toBoolean()) {
+ if (!ctx->callData->args[0].toBoolean()) {
QString message;
- for (int i = 1; i < ctx->argumentCount; ++i) {
+ for (int i = 1; i < ctx->callData->argc; ++i) {
if (i != 1)
message.append(QLatin1Char(' '));
- message.append(ctx->arguments[i].toQStringNoThrow());
+ message.append(ctx->callData->args[i].toQStringNoThrow());
}
QString stack = jsStack(v4);
@@ -1556,7 +1556,7 @@ QV4::ReturnedValue ConsoleObject::method_assert(SimpleCallContext *ctx)
QV4::ReturnedValue ConsoleObject::method_exception(SimpleCallContext *ctx)
{
- if (ctx->argumentCount == 0)
+ if (ctx->callData->argc == 0)
V4THROW_ERROR("console.exception(): Missing argument");
writeToConsole(Error, ctx, true);
@@ -1614,29 +1614,29 @@ void QV4::GlobalExtensions::init(QQmlEngine *qmlEngine, Object *globalObject)
*/
ReturnedValue GlobalExtensions::method_qsTranslate(SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 2)
+ if (ctx->callData->argc < 2)
V4THROW_ERROR("qsTranslate() requires at least two arguments");
- if (!ctx->arguments[0].isString())
+ if (!ctx->callData->args[0].isString())
V4THROW_ERROR("qsTranslate(): first argument (context) must be a string");
- if (!ctx->arguments[1].isString())
+ if (!ctx->callData->args[1].isString())
V4THROW_ERROR("qsTranslate(): second argument (sourceText) must be a string");
- if ((ctx->argumentCount > 2) && !ctx->arguments[2].isString())
+ if ((ctx->callData->argc > 2) && !ctx->callData->args[2].isString())
V4THROW_ERROR("qsTranslate(): third argument (disambiguation) must be a string");
- QString context = ctx->arguments[0].toQStringNoThrow();
- QString text = ctx->arguments[1].toQStringNoThrow();
+ QString context = ctx->callData->args[0].toQStringNoThrow();
+ QString text = ctx->callData->args[1].toQStringNoThrow();
QString comment;
- if (ctx->argumentCount > 2) comment = ctx->arguments[2].toQStringNoThrow();
+ if (ctx->callData->argc > 2) comment = ctx->callData->args[2].toQStringNoThrow();
int i = 3;
- if (ctx->argumentCount > i && ctx->arguments[i].isString()) {
+ if (ctx->callData->argc > i && ctx->callData->args[i].isString()) {
qWarning("qsTranslate(): specifying the encoding as fourth argument is deprecated");
++i;
}
int n = -1;
- if (ctx->argumentCount > i)
- n = ctx->arguments[i].toInt32();
+ if (ctx->callData->argc > i)
+ n = ctx->callData->args[i].toInt32();
QString result = QCoreApplication::translate(context.toUtf8().constData(),
text.toUtf8().constData(),
@@ -1670,9 +1670,9 @@ ReturnedValue GlobalExtensions::method_qsTranslate(SimpleCallContext *ctx)
*/
ReturnedValue GlobalExtensions::method_qsTranslateNoOp(SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 2)
+ if (ctx->callData->argc < 2)
return QV4::Encode::undefined();
- return ctx->arguments[1].asReturnedValue();
+ return ctx->callData->args[1].asReturnedValue();
}
/*!
@@ -1694,13 +1694,13 @@ ReturnedValue GlobalExtensions::method_qsTranslateNoOp(SimpleCallContext *ctx)
*/
ReturnedValue GlobalExtensions::method_qsTr(SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 1)
+ if (ctx->callData->argc < 1)
V4THROW_ERROR("qsTr() requires at least one argument");
- if (!ctx->arguments[0].isString())
+ if (!ctx->callData->args[0].isString())
V4THROW_ERROR("qsTr(): first argument (sourceText) must be a string");
- if ((ctx->argumentCount > 1) && !ctx->arguments[1].isString())
+ if ((ctx->callData->argc > 1) && !ctx->callData->args[1].isString())
V4THROW_ERROR("qsTr(): second argument (disambiguation) must be a string");
- if ((ctx->argumentCount > 2) && !ctx->arguments[2].isNumber())
+ if ((ctx->callData->argc > 2) && !ctx->callData->args[2].isNumber())
V4THROW_ERROR("qsTr(): third argument (n) must be a number");
QV8Engine *v8engine = ctx->engine->v8Engine;
@@ -1710,13 +1710,13 @@ ReturnedValue GlobalExtensions::method_qsTr(SimpleCallContext *ctx)
int lastSlash = path.lastIndexOf(QLatin1Char('/'));
QString context = (lastSlash > -1) ? path.mid(lastSlash + 1, path.length()-lastSlash-5) : QString();
- QString text = ctx->arguments[0].toQStringNoThrow();
+ QString text = ctx->callData->args[0].toQStringNoThrow();
QString comment;
- if (ctx->argumentCount > 1)
- comment = ctx->arguments[1].toQStringNoThrow();
+ if (ctx->callData->argc > 1)
+ comment = ctx->callData->args[1].toQStringNoThrow();
int n = -1;
- if (ctx->argumentCount > 2)
- n = ctx->arguments[2].toInt32();
+ if (ctx->callData->argc > 2)
+ n = ctx->callData->args[2].toInt32();
QString result = QCoreApplication::translate(context.toUtf8().constData(), text.toUtf8().constData(),
comment.toUtf8().constData(), n);
@@ -1748,9 +1748,9 @@ ReturnedValue GlobalExtensions::method_qsTr(SimpleCallContext *ctx)
*/
ReturnedValue GlobalExtensions::method_qsTrNoOp(SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 1)
+ if (ctx->callData->argc < 1)
return QV4::Encode::undefined();
- return ctx->arguments[0].asReturnedValue();
+ return ctx->callData->args[0].asReturnedValue();
}
/*!
@@ -1785,18 +1785,18 @@ ReturnedValue GlobalExtensions::method_qsTrNoOp(SimpleCallContext *ctx)
*/
ReturnedValue GlobalExtensions::method_qsTrId(SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 1)
+ if (ctx->callData->argc < 1)
V4THROW_ERROR("qsTrId() requires at least one argument");
- if (!ctx->arguments[0].isString())
+ if (!ctx->callData->args[0].isString())
V4THROW_TYPE("qsTrId(): first argument (id) must be a string");
- if (ctx->argumentCount > 1 && !ctx->arguments[1].isNumber())
+ if (ctx->callData->argc > 1 && !ctx->callData->args[1].isNumber())
V4THROW_TYPE("qsTrId(): second argument (n) must be a number");
int n = -1;
- if (ctx->argumentCount > 1)
- n = ctx->arguments[1].toInt32();
+ if (ctx->callData->argc > 1)
+ n = ctx->callData->args[1].toInt32();
- return Value::fromString(ctx, qtTrId(ctx->arguments[0].toQStringNoThrow().toUtf8().constData(), n)).asReturnedValue();
+ return Value::fromString(ctx, qtTrId(ctx->callData->args[0].toQStringNoThrow().toUtf8().constData(), n)).asReturnedValue();
}
/*!
@@ -1817,9 +1817,9 @@ ReturnedValue GlobalExtensions::method_qsTrId(SimpleCallContext *ctx)
*/
ReturnedValue GlobalExtensions::method_qsTrIdNoOp(SimpleCallContext *ctx)
{
- if (ctx->argumentCount < 1)
+ if (ctx->callData->argc < 1)
return QV4::Encode::undefined();
- return ctx->arguments[0].asReturnedValue();
+ return ctx->callData->args[0].asReturnedValue();
}
#endif // QT_NO_TRANSLATION
@@ -1835,11 +1835,11 @@ QV4::ReturnedValue GlobalExtensions::method_gc(SimpleCallContext *ctx)
ReturnedValue GlobalExtensions::method_string_arg(SimpleCallContext *ctx)
{
- QString value = ctx->thisObject.toQStringNoThrow();
- if (ctx->argumentCount != 1)
+ QString value = ctx->callData->thisObject.toQStringNoThrow();
+ if (ctx->callData->argc != 1)
V4THROW_ERROR("String.arg(): Invalid arguments");
- QV4::Value arg = ctx->arguments[0];
+ QV4::Value arg = ctx->callData->args[0];
if (arg.isInteger())
return Value::fromString(ctx, value.arg(arg.integerValue())).asReturnedValue();
else if (arg.isDouble())