aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-05-07 13:04:12 +0200
committerLars Knoll <lars.knoll@digia.com>2013-05-07 13:17:22 +0200
commit78fc64d11c187a796e6b80bd1f35792e202fa9f9 (patch)
tree47a5af8a9765e41fa604ee0a670eb2edee0f798e /src
parent468dcb84a544a56e2369f6fe235f1733c27cb7a9 (diff)
Inject the QML Number extensions directly into the Number proto and ctor
Change-Id: Ibb939057cbd1bf5d68972e656ddeae1e58a0d6a4 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/qml/qml/qqmllocale.cpp37
-rw-r--r--src/qml/qml/qqmllocale_p.h2
-rw-r--r--src/qml/qml/v8/qv8engine.cpp2
3 files changed, 8 insertions, 33 deletions
diff --git a/src/qml/qml/qqmllocale.cpp b/src/qml/qml/qqmllocale.cpp
index 0f8c3626c7..3dc7f690d1 100644
--- a/src/qml/qml/qqmllocale.cpp
+++ b/src/qml/qml/qqmllocale.cpp
@@ -49,6 +49,7 @@
#include <private/qlocale_data_p.h>
#include <private/qv4dateobject_p.h>
+#include <private/qv4numberobject_p.h>
QT_BEGIN_NAMESPACE
@@ -420,37 +421,11 @@ QV4::Value QQmlDateExtension::timeZoneUpdated(const v8::Arguments& args)
//-----------------
// Number extension
-static const char numberToLocaleStringFunction[] =
- "(function(toLocaleStringFunc) { "
- " var orig_toLocaleString;"
- " orig_toLocaleString = Number.prototype.toLocaleString;"
- " Number.prototype.toLocaleString = (function() {"
- " var val = toLocaleStringFunc.apply(this, arguments);"
- " if (val == undefined) val = orig_toLocaleString.call(this);"
- " return val;"
- " })"
- "})";
-
-static const char numberToLocaleCurrencyStringFunction[] =
- "(function(toLocaleCurrencyStringFunc) { "
- " Number.prototype.toLocaleCurrencyString = (function() {"
- " return toLocaleCurrencyStringFunc.apply(this, arguments);"
- " })"
- "})";
-
-static const char numberFromLocaleStringFunction[] =
- "(function(fromLocaleStringFunc) { "
- " Number.fromLocaleString = (function() {"
- " return fromLocaleStringFunc.apply(null, arguments);"
- " })"
- "})";
-
-
-void QQmlNumberExtension::registerExtension(QV8Engine *engine)
+void QQmlNumberExtension::registerExtension(QV4::ExecutionEngine *engine)
{
- registerFunction(engine, numberToLocaleStringFunction, toLocaleString);
- registerFunction(engine, numberToLocaleCurrencyStringFunction, toLocaleCurrencyString);
- registerFunction(engine, numberFromLocaleStringFunction, fromLocaleString);
+ engine->numberPrototype->defineDefaultProperty(engine, QStringLiteral("toLocaleString"), toLocaleString);
+ engine->numberPrototype->defineDefaultProperty(engine, QStringLiteral("toLocaleCurrencyString"), toLocaleCurrencyString);
+ engine->numberCtor.objectValue()->defineDefaultProperty(engine, QStringLiteral("fromLocaleString"), fromLocaleString);
}
QV4::Value QQmlNumberExtension::toLocaleString(QV4::SimpleCallContext *ctx)
@@ -467,7 +442,7 @@ QV4::Value QQmlNumberExtension::toLocaleString(QV4::SimpleCallContext *ctx)
}
if (!isLocaleObject(ctx->arguments[0]))
- return QV4::Value::undefinedValue(); // Use the default Number toLocaleString()
+ return QV4::NumberPrototype::method_toLocaleString(ctx); // Use the default Number toLocaleString()
V4_GET_LOCALE_DATA_RESOURCE(ctx->arguments[0]);
diff --git a/src/qml/qml/qqmllocale_p.h b/src/qml/qml/qqmllocale_p.h
index 67f5f8f1a1..a37bd71865 100644
--- a/src/qml/qml/qqmllocale_p.h
+++ b/src/qml/qml/qqmllocale_p.h
@@ -71,7 +71,7 @@ private:
class QQmlNumberExtension
{
public:
- static void registerExtension(QV8Engine *engine);
+ static void registerExtension(QV4::ExecutionEngine *engine);
private:
static QV4::Value toLocaleString(QV4::SimpleCallContext *ctx);
diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp
index a70b04d5b4..4a6300c256 100644
--- a/src/qml/qml/v8/qv8engine.cpp
+++ b/src/qml/qml/v8/qv8engine.cpp
@@ -647,7 +647,7 @@ void QV8Engine::initializeGlobal(v8::Handle<v8::Object> global)
QQmlLocale::registerStringLocaleCompare(this);
QQmlDateExtension::registerExtension(this);
- QQmlNumberExtension::registerExtension(this);
+ QQmlNumberExtension::registerExtension(m_v4Engine);
qt_add_domexceptions(m_v4Engine);
m_xmlHttpRequestData = qt_add_qmlxmlhttprequest(this);