summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qstring.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2013-04-25 22:40:54 -0700
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-14 00:34:25 +0100
commit1b26ef0c0c894a720b163333396054a8571e2581 (patch)
treeaa53520ad0c4e3c39878bc77578be3f8d9d89303 /src/corelib/tools/qstring.cpp
parent27ad3894e67a89439905321b388d75a278b4399a (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.cpp97
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);