summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools')
-rw-r--r--src/corelib/tools/qlocale.cpp68
-rw-r--r--src/corelib/tools/qlocale_p.h11
-rw-r--r--src/corelib/tools/qstring.cpp12
3 files changed, 21 insertions, 70 deletions
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index a2fe056b94..d2d49637d3 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -1237,7 +1237,7 @@ qlonglong QLocale::toLongLong(const QString &s, bool *ok) const
? QLocalePrivate::FailOnGroupSeparators
: QLocalePrivate::ParseGroupSeparators;
- return d->stringToLongLong(s, 10, ok, mode);
+ return d->stringToLongLong(s.constData(), s.size(), 10, ok, mode);
}
/*!
@@ -1261,7 +1261,7 @@ qulonglong QLocale::toULongLong(const QString &s, bool *ok) const
? QLocalePrivate::FailOnGroupSeparators
: QLocalePrivate::ParseGroupSeparators;
- return d->stringToUnsLongLong(s, 10, ok, mode);
+ return d->stringToUnsLongLong(s.constData(), s.size(), 10, ok, mode);
}
/*!
@@ -1320,7 +1320,7 @@ double QLocale::toDouble(const QString &s, bool *ok) const
? QLocalePrivate::FailOnGroupSeparators
: QLocalePrivate::ParseGroupSeparators;
- return d->stringToDouble(s, ok, mode);
+ return d->stringToDouble(s.constData(), s.size(), ok, mode);
}
/*!
@@ -1450,7 +1450,7 @@ qlonglong QLocale::toLongLong(const QStringRef &s, bool *ok) const
? QLocalePrivate::FailOnGroupSeparators
: QLocalePrivate::ParseGroupSeparators;
- return d->stringToLongLong(s, 10, ok, mode);
+ return d->stringToLongLong(s.constData(), s.size(), 10, ok, mode);
}
/*!
@@ -1476,7 +1476,7 @@ qulonglong QLocale::toULongLong(const QStringRef &s, bool *ok) const
? QLocalePrivate::FailOnGroupSeparators
: QLocalePrivate::ParseGroupSeparators;
- return d->stringToUnsLongLong(s, 10, ok, mode);
+ return d->stringToUnsLongLong(s.constData(), s.size(), 10, ok, mode);
}
/*!
@@ -1537,7 +1537,7 @@ double QLocale::toDouble(const QStringRef &s, bool *ok) const
? QLocalePrivate::FailOnGroupSeparators
: QLocalePrivate::ParseGroupSeparators;
- return d->stringToDouble(s, ok, mode);
+ return d->stringToDouble(s.constData(), s.size(), ok, mode);
}
@@ -3246,12 +3246,11 @@ bool QLocalePrivate::validateChars(const QString &str, NumberMode numMode, QByte
return true;
}
-double QLocalePrivate::stringToDouble(const QString &number, bool *ok,
+double QLocalePrivate::stringToDouble(const QChar *begin, int len, bool *ok,
GroupSeparatorMode group_sep_mode) const
{
CharBuff buff;
- if (!numberToCLocale(number.unicode(), number.size(),
- group_sep_mode, &buff)) {
+ if (!numberToCLocale(begin, len, group_sep_mode, &buff)) {
if (ok != 0)
*ok = false;
return 0.0;
@@ -3259,12 +3258,11 @@ double QLocalePrivate::stringToDouble(const QString &number, bool *ok,
return bytearrayToDouble(buff.constData(), ok);
}
-qlonglong QLocalePrivate::stringToLongLong(const QString &number, int base,
+qlonglong QLocalePrivate::stringToLongLong(const QChar *begin, int len, int base,
bool *ok, GroupSeparatorMode group_sep_mode) const
{
CharBuff buff;
- if (!numberToCLocale(number.unicode(), number.size(),
- group_sep_mode, &buff)) {
+ if (!numberToCLocale(begin, len, group_sep_mode, &buff)) {
if (ok != 0)
*ok = false;
return 0;
@@ -3273,53 +3271,11 @@ qlonglong QLocalePrivate::stringToLongLong(const QString &number, int base,
return bytearrayToLongLong(buff.constData(), base, ok);
}
-qulonglong QLocalePrivate::stringToUnsLongLong(const QString &number, int base,
+qulonglong QLocalePrivate::stringToUnsLongLong(const QChar *begin, int len, int base,
bool *ok, GroupSeparatorMode group_sep_mode) const
{
CharBuff buff;
- if (!numberToCLocale(number.unicode(), number.size(),
- group_sep_mode, &buff)) {
- if (ok != 0)
- *ok = false;
- return 0;
- }
-
- return bytearrayToUnsLongLong(buff.constData(), base, ok);
-}
-
-double QLocalePrivate::stringToDouble(const QStringRef &number, bool *ok,
- GroupSeparatorMode group_sep_mode) const
-{
- CharBuff buff;
- if (!numberToCLocale(number.unicode(), number.size(),
- group_sep_mode, &buff)) {
- if (ok != 0)
- *ok = false;
- return 0.0;
- }
- return bytearrayToDouble(buff.constData(), ok);
-}
-
-qlonglong QLocalePrivate::stringToLongLong(const QStringRef &number, int base,
- bool *ok, GroupSeparatorMode group_sep_mode) const
-{
- CharBuff buff;
- if (!numberToCLocale(number.unicode(), number.size(),
- group_sep_mode, &buff)) {
- if (ok != 0)
- *ok = false;
- return 0;
- }
-
- return bytearrayToLongLong(buff.constData(), base, ok);
-}
-
-qulonglong QLocalePrivate::stringToUnsLongLong(const QStringRef &number, int base,
- bool *ok, GroupSeparatorMode group_sep_mode) const
-{
- CharBuff buff;
- if (!numberToCLocale(number.unicode(), number.size(),
- group_sep_mode, &buff)) {
+ if (!numberToCLocale(begin, len, group_sep_mode, &buff)) {
if (ok != 0)
*ok = false;
return 0;
diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h
index 4b5b4d67b5..b544a55c31 100644
--- a/src/corelib/tools/qlocale_p.h
+++ b/src/corelib/tools/qlocale_p.h
@@ -306,14 +306,9 @@ public:
int base = 10,
int width = -1,
unsigned flags = NoFlags) const;
- double stringToDouble(const QString &num, bool *ok, GroupSeparatorMode group_sep_mode) const;
- qint64 stringToLongLong(const QString &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const;
- quint64 stringToUnsLongLong(const QString &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const;
-
- double stringToDouble(const QStringRef &num, bool *ok, GroupSeparatorMode group_sep_mode) const;
- qint64 stringToLongLong(const QStringRef &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const;
- quint64 stringToUnsLongLong(const QStringRef &num, int base, bool *ok, GroupSeparatorMode group_sep_mode) const;
-
+ double stringToDouble(const QChar *begin, int len, bool *ok, GroupSeparatorMode group_sep_mode) const;
+ qint64 stringToLongLong(const QChar *begin, int len, int base, bool *ok, GroupSeparatorMode group_sep_mode) const;
+ quint64 stringToUnsLongLong(const QChar *begin, int len, int base, bool *ok, GroupSeparatorMode group_sep_mode) const;
static double bytearrayToDouble(const char *num, bool *ok, bool *overflow = 0);
static qint64 bytearrayToLongLong(const char *num, int base, bool *ok, bool *overflow = 0);
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 9f939dd795..909e50e86e 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -6078,7 +6078,7 @@ qint64 QString::toLongLong(bool *ok, int base) const
#endif
QLocale c_locale(QLocale::C);
- return c_locale.d->stringToLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators);
+ return c_locale.d->stringToLongLong(constData(), size(), base, ok, QLocalePrivate::FailOnGroupSeparators);
}
/*!
@@ -6113,7 +6113,7 @@ quint64 QString::toULongLong(bool *ok, int base) const
#endif
QLocale c_locale(QLocale::C);
- return c_locale.d->stringToUnsLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators);
+ return c_locale.d->stringToUnsLongLong(constData(), size(), base, ok, QLocalePrivate::FailOnGroupSeparators);
}
/*!
@@ -6352,7 +6352,7 @@ ushort QString::toUShort(bool *ok, int base) const
double QString::toDouble(bool *ok) const
{
QLocale c_locale(QLocale::C);
- return c_locale.d->stringToDouble(*this, ok, QLocalePrivate::FailOnGroupSeparators);
+ return c_locale.d->stringToDouble(constData(), size(), ok, QLocalePrivate::FailOnGroupSeparators);
}
/*!
@@ -9622,7 +9622,7 @@ qint64 QStringRef::toLongLong(bool *ok, int base) const
#endif
QLocale c_locale(QLocale::C);
- return c_locale.d->stringToLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators);
+ return c_locale.d->stringToLongLong(constData(), size(), base, ok, QLocalePrivate::FailOnGroupSeparators);
}
/*!
@@ -9655,7 +9655,7 @@ quint64 QStringRef::toULongLong(bool *ok, int base) const
#endif
QLocale c_locale(QLocale::C);
- return c_locale.d->stringToUnsLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators);
+ return c_locale.d->stringToUnsLongLong(constData(), size(), base, ok, QLocalePrivate::FailOnGroupSeparators);
}
/*!
@@ -9873,7 +9873,7 @@ ushort QStringRef::toUShort(bool *ok, int base) const
double QStringRef::toDouble(bool *ok) const
{
QLocale c_locale(QLocale::C);
- return c_locale.d->stringToDouble(*this, ok, QLocalePrivate::FailOnGroupSeparators);
+ return c_locale.d->stringToDouble(constData(), size(), ok, QLocalePrivate::FailOnGroupSeparators);
}
/*!