diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-05-25 14:32:31 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2013-05-26 02:49:30 +0200 |
commit | d7b5b7756849e8c056cedc602502d1d8af5a66bb (patch) | |
tree | 2545b0dba8b45ce2b439beaa28cb2dcf05a05f6f /src/qml/qml/qqmllocale.cpp | |
parent | 82be884e2f8fe38c23476cd7e03a410225dfd42f (diff) |
Remove template argument from MemberAccessorGetterSetter class
Like this we don't need to have the call method inline. This is bad, as the
method uses try/catch, and leads to compile errors with clang if the header is
included from libs compiled without exceptions enabled.
Change-Id: I801e21aafafc255836dfa19b81c84f884de0b395
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmllocale.cpp')
-rw-r--r-- | src/qml/qml/qqmllocale.cpp | 79 |
1 files changed, 48 insertions, 31 deletions
diff --git a/src/qml/qml/qqmllocale.cpp b/src/qml/qml/qqmllocale.cpp index 6e149703db..5db82c9e96 100644 --- a/src/qml/qml/qqmllocale.cpp +++ b/src/qml/qml/qqmllocale.cpp @@ -67,35 +67,42 @@ public: QLocale locale; + static QLocale &getThisLocale(QV4::SimpleCallContext *ctx) { + QQmlLocaleData *thisObject = ctx->thisObject.asObject()->asQmlLocale(); + if (!thisObject) + ctx->throwTypeError(); + return thisObject->locale; + } + static void initClass(QV4::ExecutionEngine *engine, const QV4::Value &obj); - QV4::Value method_currencySymbol(QV4::SimpleCallContext *ctx); - QV4::Value method_dateTimeFormat(QV4::SimpleCallContext *ctx); - QV4::Value method_timeFormat(QV4::SimpleCallContext *ctx); - QV4::Value method_dateFormat(QV4::SimpleCallContext *ctx); - QV4::Value method_monthName(QV4::SimpleCallContext *ctx); - QV4::Value method_standaloneMonthName(QV4::SimpleCallContext *ctx); - QV4::Value method_dayName(QV4::SimpleCallContext *ctx); - QV4::Value method_standaloneDayName(QV4::SimpleCallContext *ctx); - - QV4::Value method_get_firstDayOfWeek(QV4::SimpleCallContext *ctx); - QV4::Value method_get_measurementSystem(QV4::SimpleCallContext *ctx); - QV4::Value method_get_textDirection(QV4::SimpleCallContext *ctx); - QV4::Value method_get_weekDays(QV4::SimpleCallContext *ctx); - QV4::Value method_get_uiLanguages(QV4::SimpleCallContext *ctx); - - QV4::Value method_get_name(QV4::SimpleCallContext *ctx); - QV4::Value method_get_nativeLanguageName(QV4::SimpleCallContext *ctx); - QV4::Value method_get_nativeCountryName(QV4::SimpleCallContext *ctx); - QV4::Value method_get_decimalPoint(QV4::SimpleCallContext *ctx); - QV4::Value method_get_groupSeparator(QV4::SimpleCallContext *ctx); - QV4::Value method_get_percent(QV4::SimpleCallContext *ctx); - QV4::Value method_get_zeroDigit(QV4::SimpleCallContext *ctx); - QV4::Value method_get_negativeSign(QV4::SimpleCallContext *ctx); - QV4::Value method_get_positiveSign(QV4::SimpleCallContext *ctx); - QV4::Value method_get_exponential(QV4::SimpleCallContext *ctx); - QV4::Value method_get_amText(QV4::SimpleCallContext *ctx); - QV4::Value method_get_pmText(QV4::SimpleCallContext *ctx); + static QV4::Value method_currencySymbol(QV4::SimpleCallContext *ctx); + static QV4::Value method_dateTimeFormat(QV4::SimpleCallContext *ctx); + static QV4::Value method_timeFormat(QV4::SimpleCallContext *ctx); + static QV4::Value method_dateFormat(QV4::SimpleCallContext *ctx); + static QV4::Value method_monthName(QV4::SimpleCallContext *ctx); + static QV4::Value method_standaloneMonthName(QV4::SimpleCallContext *ctx); + static QV4::Value method_dayName(QV4::SimpleCallContext *ctx); + static QV4::Value method_standaloneDayName(QV4::SimpleCallContext *ctx); + + static QV4::Value method_get_firstDayOfWeek(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_measurementSystem(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_textDirection(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_weekDays(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_uiLanguages(QV4::SimpleCallContext *ctx); + + static QV4::Value method_get_name(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_nativeLanguageName(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_nativeCountryName(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_decimalPoint(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_groupSeparator(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_percent(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_zeroDigit(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_negativeSign(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_positiveSign(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_exponential(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_amText(QV4::SimpleCallContext *ctx); + static QV4::Value method_get_pmText(QV4::SimpleCallContext *ctx); private: static void destroy(Managed *that) @@ -498,26 +505,30 @@ QV4::Value QQmlNumberExtension::fromLocaleString(QV4::SimpleCallContext *ctx) //-------------- // Locale object -QV4::Value QQmlLocaleData::method_get_firstDayOfWeek(QV4::SimpleCallContext*) +QV4::Value QQmlLocaleData::method_get_firstDayOfWeek(QV4::SimpleCallContext *ctx) { + QLocale locale = getThisLocale(ctx); int fdow = int(locale.firstDayOfWeek()); if (fdow == 7) fdow = 0; // Qt::Sunday = 7, but Sunday is 0 in JS Date return QV4::Value::fromInt32(fdow); } -QV4::Value QQmlLocaleData::method_get_measurementSystem(QV4::SimpleCallContext*) +QV4::Value QQmlLocaleData::method_get_measurementSystem(QV4::SimpleCallContext *ctx) { + QLocale locale = getThisLocale(ctx); return QV4::Value::fromInt32(locale.measurementSystem()); } -QV4::Value QQmlLocaleData::method_get_textDirection(QV4::SimpleCallContext*) +QV4::Value QQmlLocaleData::method_get_textDirection(QV4::SimpleCallContext *ctx) { + QLocale locale = getThisLocale(ctx); return QV4::Value::fromInt32(locale.textDirection()); } -QV4::Value QQmlLocaleData::method_get_weekDays(QV4::SimpleCallContext* ctx) +QV4::Value QQmlLocaleData::method_get_weekDays(QV4::SimpleCallContext *ctx) { + QLocale locale = getThisLocale(ctx); QList<Qt::DayOfWeek> days = locale.weekdays(); QV4::ArrayObject *result = ctx->engine->newArrayObject(); @@ -535,6 +546,7 @@ QV4::Value QQmlLocaleData::method_get_weekDays(QV4::SimpleCallContext* ctx) QV4::Value QQmlLocaleData::method_get_uiLanguages(QV4::SimpleCallContext *ctx) { + QLocale locale = getThisLocale(ctx); QStringList langs = locale.uiLanguages(); QV4::ArrayObject *result = ctx->engine->newArrayObject(); result->arrayReserve(langs.size()); @@ -547,6 +559,7 @@ QV4::Value QQmlLocaleData::method_get_uiLanguages(QV4::SimpleCallContext *ctx) QV4::Value QQmlLocaleData::method_currencySymbol(QV4::SimpleCallContext *ctx) { + QLocale locale = getThisLocale(ctx); if (ctx->argumentCount > 1) V4THROW_ERROR("Locale: currencySymbol(): Invalid arguments"); @@ -561,6 +574,7 @@ QV4::Value QQmlLocaleData::method_currencySymbol(QV4::SimpleCallContext *ctx) #define LOCALE_FORMAT(FUNC) \ QV4::Value QQmlLocaleData::method_ ##FUNC (QV4::SimpleCallContext *ctx) { \ + QLocale locale = getThisLocale(ctx); \ if (ctx->argumentCount > 1) \ V4THROW_ERROR("Locale: " #FUNC "(): Invalid arguments"); \ QLocale::FormatType format = QLocale::LongFormat;\ @@ -578,6 +592,7 @@ LOCALE_FORMAT(dateFormat) // +1 added to idx because JS is 0-based, whereas QLocale months begin at 1. #define LOCALE_FORMATTED_MONTHNAME(VARIABLE) \ QV4::Value QQmlLocaleData::method_ ## VARIABLE (QV4::SimpleCallContext *ctx) {\ + QLocale locale = getThisLocale(ctx); \ if (ctx->argumentCount < 1 || ctx->argumentCount > 2) \ V4THROW_ERROR("Locale: " #VARIABLE "(): Invalid arguments"); \ QLocale::FormatType enumFormat = QLocale::LongFormat; \ @@ -602,6 +617,7 @@ QV4::Value QQmlLocaleData::method_ ## VARIABLE (QV4::SimpleCallContext *ctx) {\ // 0 -> 7 as Qt::Sunday is 7, but Sunday is 0 in JS Date #define LOCALE_FORMATTED_DAYNAME(VARIABLE) \ QV4::Value QQmlLocaleData::method_ ## VARIABLE (QV4::SimpleCallContext *ctx) {\ + QLocale locale = getThisLocale(ctx); \ if (ctx->argumentCount < 1 || ctx->argumentCount > 2) \ V4THROW_ERROR("Locale: " #VARIABLE "(): Invalid arguments"); \ QLocale::FormatType enumFormat = QLocale::LongFormat; \ @@ -631,6 +647,7 @@ LOCALE_FORMATTED_DAYNAME(standaloneDayName) #define LOCALE_STRING_PROPERTY(VARIABLE) QV4::Value QQmlLocaleData::method_get_ ## VARIABLE (QV4::SimpleCallContext* ctx) \ { \ + QLocale locale = getThisLocale(ctx); \ return QV4::Value::fromString(ctx, locale. VARIABLE());\ } |