diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2013-04-25 22:40:54 -0700 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-14 00:34:25 +0100 |
commit | 1b26ef0c0c894a720b163333396054a8571e2581 (patch) | |
tree | aa53520ad0c4e3c39878bc77578be3f8d9d89303 /src/corelib/tools/qstring.cpp | |
parent | 27ad3894e67a89439905321b388d75a278b4399a (diff) |
QLocalePrivate: move the xxxToString functions to QLocaleData
Those functions do not need any of extra QLocale settings in
QLocalePrivate, so we can move them easily, along with their flags.
It's also very convenient that we can now bypass completely QLocale
when formatting numbers to strings.
Change-Id: I8cae64e8e2056a6b2d716758e4be79f746644732
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/corelib/tools/qstring.cpp')
-rw-r--r-- | src/corelib/tools/qstring.cpp | 97 |
1 files changed, 46 insertions, 51 deletions
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index 909e50e86e..f02b09b836 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -5720,8 +5720,6 @@ QString &QString::sprintf(const char *cformat, ...) QString &QString::vsprintf(const char* cformat, va_list ap) { - const QLocale locale(QLocale::C); - if (!cformat || !*cformat) { // Qt 1.x compat *this = fromLatin1(""); @@ -5761,12 +5759,12 @@ QString &QString::vsprintf(const char* cformat, va_list ap) bool no_more_flags = false; do { switch (*c) { - case '#': flags |= QLocalePrivate::Alternate; break; - case '0': flags |= QLocalePrivate::ZeroPadded; break; - case '-': flags |= QLocalePrivate::LeftAdjusted; break; - case ' ': flags |= QLocalePrivate::BlankBeforePositive; break; - case '+': flags |= QLocalePrivate::AlwaysShowSign; break; - case '\'': flags |= QLocalePrivate::ThousandsGroup; break; + case '#': flags |= QLocaleData::Alternate; break; + case '0': flags |= QLocaleData::ZeroPadded; break; + case '-': flags |= QLocaleData::LeftAdjusted; break; + case ' ': flags |= QLocaleData::BlankBeforePositive; break; + case '+': flags |= QLocaleData::AlwaysShowSign; break; + case '\'': flags |= QLocaleData::ThousandsGroup; break; default: no_more_flags = true; break; } @@ -5898,7 +5896,7 @@ QString &QString::vsprintf(const char* cformat, va_list ap) case lm_t: i = va_arg(ap, int); break; default: i = 0; break; } - subst = locale.d->longLongToString(i, precision, 10, width, flags); + subst = QLocaleData::c()->longLongToString(i, precision, 10, width, flags); ++c; break; } @@ -5918,7 +5916,7 @@ QString &QString::vsprintf(const char* cformat, va_list ap) } if (qIsUpper(*c)) - flags |= QLocalePrivate::CapitalEorX; + flags |= QLocaleData::CapitalEorX; int base = 10; switch (qToLower(*c)) { @@ -5930,7 +5928,7 @@ QString &QString::vsprintf(const char* cformat, va_list ap) base = 16; break; default: break; } - subst = locale.d->unsLongLongToString(u, precision, base, width, flags); + subst = QLocaleData::c()->unsLongLongToString(u, precision, base, width, flags); ++c; break; } @@ -5949,17 +5947,17 @@ QString &QString::vsprintf(const char* cformat, va_list ap) d = va_arg(ap, double); if (qIsUpper(*c)) - flags |= QLocalePrivate::CapitalEorX; + flags |= QLocaleData::CapitalEorX; - QLocalePrivate::DoubleForm form = QLocalePrivate::DFDecimal; + QLocaleData::DoubleForm form = QLocaleData::DFDecimal; switch (qToLower(*c)) { - case 'e': form = QLocalePrivate::DFExponent; break; + case 'e': form = QLocaleData::DFExponent; break; case 'a': // not supported - decimal form used instead - case 'f': form = QLocalePrivate::DFDecimal; break; - case 'g': form = QLocalePrivate::DFSignificantDigits; break; + case 'f': form = QLocaleData::DFDecimal; break; + case 'g': form = QLocaleData::DFSignificantDigits; break; default: break; } - subst = locale.d->doubleToString(d, precision, form, width, flags); + subst = QLocaleData::c()->doubleToString(d, precision, form, width, flags); ++c; break; } @@ -5992,8 +5990,8 @@ QString &QString::vsprintf(const char* cformat, va_list ap) #else quint64 i = reinterpret_cast<unsigned long>(arg); #endif - flags |= QLocalePrivate::Alternate; - subst = locale.d->unsLongLongToString(i, precision, 16, width, flags); + flags |= QLocaleData::Alternate; + subst = QLocaleData::c()->unsLongLongToString(i, precision, 16, width, flags); ++c; break; } @@ -6035,7 +6033,7 @@ QString &QString::vsprintf(const char* cformat, va_list ap) continue; } - if (flags & QLocalePrivate::LeftAdjusted) + if (flags & QLocaleData::LeftAdjusted) result.append(subst.leftJustified(width)); else result.append(subst.rightJustified(width)); @@ -6435,8 +6433,7 @@ QString &QString::setNum(qlonglong n, int base) base = 10; } #endif - QLocale locale(QLocale::C); - *this = locale.d->longLongToString(n, -1, base); + *this = QLocaleData::c()->longLongToString(n, -1, base); return *this; } @@ -6451,8 +6448,7 @@ QString &QString::setNum(qulonglong n, int base) base = 10; } #endif - QLocale locale(QLocale::C); - *this = locale.d->unsLongLongToString(n, -1, base); + *this = QLocaleData::c()->unsLongLongToString(n, -1, base); return *this; } @@ -6484,22 +6480,22 @@ QString &QString::setNum(qulonglong n, int base) QString &QString::setNum(double n, char f, int prec) { - QLocalePrivate::DoubleForm form = QLocalePrivate::DFDecimal; + QLocaleData::DoubleForm form = QLocaleData::DFDecimal; uint flags = 0; if (qIsUpper(f)) - flags = QLocalePrivate::CapitalEorX; + flags = QLocaleData::CapitalEorX; f = qToLower(f); switch (f) { case 'f': - form = QLocalePrivate::DFDecimal; + form = QLocaleData::DFDecimal; break; case 'e': - form = QLocalePrivate::DFExponent; + form = QLocaleData::DFExponent; break; case 'g': - form = QLocalePrivate::DFSignificantDigits; + form = QLocaleData::DFSignificantDigits; break; default: #if defined(QT_CHECK_RANGE) @@ -6508,8 +6504,7 @@ QString &QString::setNum(double n, char f, int prec) break; } - QLocale locale(QLocale::C); - *this = locale.d->doubleToString(n, prec, form, -1, flags); + *this = QLocaleData::c()->doubleToString(n, prec, form, -1, flags); return *this; } @@ -7307,20 +7302,20 @@ QString QString::arg(qlonglong a, int fieldWidth, int base, QChar fillChar) cons return *this; } - unsigned flags = QLocalePrivate::NoFlags; + unsigned flags = QLocaleData::NoFlags; if (fillChar == QLatin1Char('0')) - flags = QLocalePrivate::ZeroPadded; + flags = QLocaleData::ZeroPadded; QString arg; if (d.occurrences > d.locale_occurrences) - arg = QLocale::c().d->longLongToString(a, -1, base, fieldWidth, flags); + arg = QLocaleData::c()->longLongToString(a, -1, base, fieldWidth, flags); QString locale_arg; if (d.locale_occurrences > 0) { QLocale locale; if (!(locale.numberOptions() & QLocale::OmitGroupSeparator)) - flags |= QLocalePrivate::ThousandsGroup; - locale_arg = locale.d->longLongToString(a, -1, base, fieldWidth, flags); + flags |= QLocaleData::ThousandsGroup; + locale_arg = locale.d->m_data->longLongToString(a, -1, base, fieldWidth, flags); } return replaceArgEscapes(*this, d, fieldWidth, arg, locale_arg, fillChar); @@ -7351,20 +7346,20 @@ QString QString::arg(qulonglong a, int fieldWidth, int base, QChar fillChar) con return *this; } - unsigned flags = QLocalePrivate::NoFlags; + unsigned flags = QLocaleData::NoFlags; if (fillChar == QLatin1Char('0')) - flags = QLocalePrivate::ZeroPadded; + flags = QLocaleData::ZeroPadded; QString arg; if (d.occurrences > d.locale_occurrences) - arg = QLocale::c().d->unsLongLongToString(a, -1, base, fieldWidth, flags); + arg = QLocaleData::c()->unsLongLongToString(a, -1, base, fieldWidth, flags); QString locale_arg; if (d.locale_occurrences > 0) { QLocale locale; if (!(locale.numberOptions() & QLocale::OmitGroupSeparator)) - flags |= QLocalePrivate::ThousandsGroup; - locale_arg = locale.d->unsLongLongToString(a, -1, base, fieldWidth, flags); + flags |= QLocaleData::ThousandsGroup; + locale_arg = locale.d->m_data->unsLongLongToString(a, -1, base, fieldWidth, flags); } return replaceArgEscapes(*this, d, fieldWidth, arg, locale_arg, fillChar); @@ -7463,24 +7458,24 @@ QString QString::arg(double a, int fieldWidth, char fmt, int prec, QChar fillCha return *this; } - unsigned flags = QLocalePrivate::NoFlags; + unsigned flags = QLocaleData::NoFlags; if (fillChar == QLatin1Char('0')) - flags = QLocalePrivate::ZeroPadded; + flags = QLocaleData::ZeroPadded; if (qIsUpper(fmt)) - flags |= QLocalePrivate::CapitalEorX; + flags |= QLocaleData::CapitalEorX; fmt = qToLower(fmt); - QLocalePrivate::DoubleForm form = QLocalePrivate::DFDecimal; + QLocaleData::DoubleForm form = QLocaleData::DFDecimal; switch (fmt) { case 'f': - form = QLocalePrivate::DFDecimal; + form = QLocaleData::DFDecimal; break; case 'e': - form = QLocalePrivate::DFExponent; + form = QLocaleData::DFExponent; break; case 'g': - form = QLocalePrivate::DFSignificantDigits; + form = QLocaleData::DFSignificantDigits; break; default: #if defined(QT_CHECK_RANGE) @@ -7491,15 +7486,15 @@ QString QString::arg(double a, int fieldWidth, char fmt, int prec, QChar fillCha QString arg; if (d.occurrences > d.locale_occurrences) - arg = QLocale::c().d->doubleToString(a, prec, form, fieldWidth, flags); + arg = QLocaleData::c()->doubleToString(a, prec, form, fieldWidth, flags); QString locale_arg; if (d.locale_occurrences > 0) { QLocale locale; if (!(locale.numberOptions() & QLocale::OmitGroupSeparator)) - flags |= QLocalePrivate::ThousandsGroup; - locale_arg = locale.d->doubleToString(a, prec, form, fieldWidth, flags); + flags |= QLocaleData::ThousandsGroup; + locale_arg = locale.d->m_data->doubleToString(a, prec, form, fieldWidth, flags); } return replaceArgEscapes(*this, d, fieldWidth, arg, locale_arg, fillChar); |