diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-13 16:19:22 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-18 13:14:05 +0200 |
commit | 19f7850176e95fb181efb45b2c9a5319582a086c (patch) | |
tree | f3e876fa25d8ca45c5c8611b6171d1b9f5d47a16 /src/qml/jsruntime | |
parent | 49aead7f236f8b8a6ab85adc4b5eace1c1e4dde6 (diff) |
Convert methods in qv4runtime to use Returned<X>
Change-Id: I1f68ecb298b049f3fa90de26b4b39233d48fb8e0
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r-- | src/qml/jsruntime/qv4managed_p.h | 1 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4numberobject.cpp | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 37 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4runtime_p.h | 6 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4value.cpp | 2 |
5 files changed, 21 insertions, 27 deletions
diff --git a/src/qml/jsruntime/qv4managed_p.h b/src/qml/jsruntime/qv4managed_p.h index 9ea1fe9f80..097cfde51d 100644 --- a/src/qml/jsruntime/qv4managed_p.h +++ b/src/qml/jsruntime/qv4managed_p.h @@ -68,6 +68,7 @@ struct Returned : private T T *getPointer() { return this; } template<typename X> static T *getPointer(Returned<X> *x) { return x->getPointer(); } + using T::asReturnedValue; }; #define Q_MANAGED \ diff --git a/src/qml/jsruntime/qv4numberobject.cpp b/src/qml/jsruntime/qv4numberobject.cpp index c83d08d450..3702428553 100644 --- a/src/qml/jsruntime/qv4numberobject.cpp +++ b/src/qml/jsruntime/qv4numberobject.cpp @@ -196,7 +196,7 @@ ReturnedValue NumberPrototype::method_toFixed(SimpleCallContext *ctx) else if (v < 1.e21) str = QString::number(v, 'f', int (fdigits)); else - return __qmljs_string_from_number(ctx, v); + return __qmljs_string_from_number(ctx, v)->asReturnedValue(); return Value::fromString(ctx, str).asReturnedValue(); } diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index cfb0a9f4a0..7af8b21cc5 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -285,8 +285,7 @@ QV4::ReturnedValue __qmljs_add_helper(ExecutionContext *ctx, const ValueRef left pleft = __qmljs_to_string(pleft, ctx); if (!pright->isString()) pright = __qmljs_to_string(pright, ctx); - String *string = __qmljs_string_concat(ctx, pleft->stringValue(), pright->stringValue()); - return Value::fromString(string).asReturnedValue(); + return __qmljs_string_concat(ctx, pleft->stringValue(), pright->stringValue())->asReturnedValue(); } double x = __qmljs_to_number(pleft); double y = __qmljs_to_number(pright); @@ -532,15 +531,15 @@ double __qmljs_string_to_number(const QString &string) return d; } -ReturnedValue __qmljs_string_from_number(ExecutionContext *ctx, double number) +Returned<String> *__qmljs_string_from_number(ExecutionContext *ctx, double number) { QString qstr; __qmljs_numberToString(&qstr, number, 10); String *string = ctx->engine->newString(qstr); - return string->asReturnedValue(); + return string->asReturned<String>(); } -String *__qmljs_string_concat(ExecutionContext *ctx, String *first, String *second) +Returned<String> *__qmljs_string_concat(ExecutionContext *ctx, String *first, String *second) { const QString &a = first->toQString(); const QString &b = second->toQString(); @@ -550,7 +549,7 @@ String *__qmljs_string_concat(ExecutionContext *ctx, String *first, String *seco data += a.length(); memcpy(data, b.constData(), b.length()*sizeof(QChar)); - return ctx->engine->newString(newStr); + return ctx->engine->newString(newStr)->asReturned<String>(); } ReturnedValue __qmljs_object_default_value(Object *object, int typeHint) @@ -618,35 +617,29 @@ Returned<Object> *__qmljs_convert_to_object(ExecutionContext *ctx, const ValueRe } } -String *__qmljs_convert_to_string(ExecutionContext *ctx, const ValueRef value) +Returned<String> *__qmljs_convert_to_string(ExecutionContext *ctx, const ValueRef value) { switch (value->type()) { case Value::Undefined_Type: - return ctx->engine->id_undefined; + return ctx->engine->id_undefined->asReturned<String>(); case Value::Null_Type: - return ctx->engine->id_null; + return ctx->engine->id_null->asReturned<String>(); case Value::Boolean_Type: if (value->booleanValue()) - return ctx->engine->id_true; + return ctx->engine->id_true->asReturned<String>(); else - return ctx->engine->id_false; + return ctx->engine->id_false->asReturned<String>(); case Value::String_Type: - return value->stringValue(); + return value->stringValue()->asReturned<String>(); case Value::Object_Type: { Scope scope(ctx); ScopedValue prim(scope, __qmljs_to_primitive(value, STRING_HINT)); return __qmljs_convert_to_string(ctx, prim); } - case Value::Integer_Type: { - Scope scope(ctx); - ScopedValue dbl(scope, __qmljs_string_from_number(ctx, value->int_32)); - return dbl->stringValue(); - } - default: { // double - Scope scope(ctx); - ScopedValue dbl(scope, __qmljs_string_from_number(ctx, value->doubleValue())); - return dbl->stringValue(); - } + case Value::Integer_Type: + return __qmljs_string_from_number(ctx, value->int_32); + default: // double + return __qmljs_string_from_number(ctx, value->doubleValue()); } // switch } diff --git a/src/qml/jsruntime/qv4runtime_p.h b/src/qml/jsruntime/qv4runtime_p.h index 6e578bcaca..03d00fc7ab 100644 --- a/src/qml/jsruntime/qv4runtime_p.h +++ b/src/qml/jsruntime/qv4runtime_p.h @@ -143,8 +143,8 @@ QV4::ReturnedValue __qmljs_init_closure(QV4::ExecutionContext *ctx, int function // strings Q_QML_EXPORT double __qmljs_string_to_number(const QString &s); -QV4::ReturnedValue __qmljs_string_from_number(QV4::ExecutionContext *ctx, double number); -QV4::String *__qmljs_string_concat(QV4::ExecutionContext *ctx, QV4::String *first, QV4::String *second); +Returned<String> *__qmljs_string_from_number(QV4::ExecutionContext *ctx, double number); +Returned<String> *__qmljs_string_concat(QV4::ExecutionContext *ctx, QV4::String *first, QV4::String *second); // objects Q_QML_EXPORT ReturnedValue __qmljs_object_default_value(QV4::Object *object, int typeHint); @@ -169,7 +169,7 @@ QV4::ReturnedValue __qmljs_to_primitive(const ValueRef value, int typeHint); Q_QML_EXPORT QV4::Bool __qmljs_to_boolean(const QV4::ValueRef value); double __qmljs_to_number(const QV4::ValueRef value); QV4::ReturnedValue __qmljs_to_string(const ValueRef value, QV4::ExecutionContext *ctx); -Q_QML_EXPORT QV4::String *__qmljs_convert_to_string(QV4::ExecutionContext *ctx, const ValueRef value); +Q_QML_EXPORT Returned<String> *__qmljs_convert_to_string(QV4::ExecutionContext *ctx, const ValueRef value); void __qmljs_numberToString(QString *result, double num, int radix = 10); ReturnedValue __qmljs_to_object(QV4::ExecutionContext *ctx, const ValueRef value); Returned<Object> *__qmljs_convert_to_object(QV4::ExecutionContext *ctx, const ValueRef value); diff --git a/src/qml/jsruntime/qv4value.cpp b/src/qml/jsruntime/qv4value.cpp index 8f2c11b5da..79bfae42e3 100644 --- a/src/qml/jsruntime/qv4value.cpp +++ b/src/qml/jsruntime/qv4value.cpp @@ -305,7 +305,7 @@ String *Value::toString(ExecutionContext *ctx) const { if (isString()) return stringValue(); - return __qmljs_convert_to_string(ctx, ValueRef::fromRawValue(this)); + return __qmljs_convert_to_string(ctx, ValueRef::fromRawValue(this))->getPointer(); } Object *Value::toObject(ExecutionContext *ctx) const |