QLocale: port to qsizetype [2/N]: remainder (qlocale_win.cpp partial)
Port ints to qsizetypes where they're not blatantly wrong. This includes indexed loops that don't require the additional range, because int these days is a code smell, so if we can save the next code reader a few moments of digging to convince herself that the int is ok even in 64-bit builds, then let's do it. The Windows implementation only has the most obvious occurrences ported, because I lack platform access. Created QTBUG-105100 to track the missing changes. OSX should be fine, provided sizeof(long) == 8 on 64-bit OSX. Task-number: QTBUG-103531 Change-Id: I679183f28ed42e89e2879e29457e6a4e487fed0d Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 24e8a693cdf418a90559472addfd49637ff4e270) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
e8e91ef35c
commit
6cdc2fc0f4
@ -177,7 +177,7 @@ QLocale::Script QLocalePrivate::codeToScript(QStringView code) noexcept
|
|||||||
unsigned char c3 = code[3].toLower().toLatin1();
|
unsigned char c3 = code[3].toLower().toLatin1();
|
||||||
|
|
||||||
const unsigned char *c = script_code_list;
|
const unsigned char *c = script_code_list;
|
||||||
for (int i = 0; i < QLocale::LastScript; ++i, c += 4) {
|
for (qsizetype i = 0; i < QLocale::LastScript; ++i, c += 4) {
|
||||||
if (c0 == c[0] && c1 == c[1] && c2 == c[2] && c3 == c[3])
|
if (c0 == c[0] && c1 == c[1] && c2 == c[2] && c3 == c[3])
|
||||||
return QLocale::Script(i);
|
return QLocale::Script(i);
|
||||||
}
|
}
|
||||||
@ -3588,7 +3588,7 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form,
|
|||||||
Q_ASSERT(!zero.at(0).isSurrogate());
|
Q_ASSERT(!zero.at(0).isSurrogate());
|
||||||
char16_t z = zero.at(0).unicode();
|
char16_t z = zero.at(0).unicode();
|
||||||
char16_t *const value = reinterpret_cast<char16_t *>(digits.data());
|
char16_t *const value = reinterpret_cast<char16_t *>(digits.data());
|
||||||
for (int i = 0; i < digits.length(); ++i)
|
for (qsizetype i = 0; i < digits.size(); ++i)
|
||||||
value[i] = unicodeForDigit(value[i] - '0', z);
|
value[i] = unicodeForDigit(value[i] - '0', z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3636,7 +3636,7 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form,
|
|||||||
// Assume digitCount < 95, so we can ignore the 3-digit
|
// Assume digitCount < 95, so we can ignore the 3-digit
|
||||||
// exponent case (we'll set useDecimal false anyway).
|
// exponent case (we'll set useDecimal false anyway).
|
||||||
|
|
||||||
const int digitCount = digits.length() / zero.size();
|
const qsizetype digitCount = digits.size() / zero.size();
|
||||||
if (!mustMarkDecimal) {
|
if (!mustMarkDecimal) {
|
||||||
// Decimal separator is skipped if at end; adjust if
|
// Decimal separator is skipped if at end; adjust if
|
||||||
// that happens for only one form:
|
// that happens for only one form:
|
||||||
@ -3670,7 +3670,7 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form,
|
|||||||
|
|
||||||
// Pad with zeros. LeftAdjusted overrides ZeroPadded.
|
// Pad with zeros. LeftAdjusted overrides ZeroPadded.
|
||||||
if (flags & ZeroPadded && !(flags & LeftAdjusted)) {
|
if (flags & ZeroPadded && !(flags & LeftAdjusted)) {
|
||||||
for (int i = numStr.length() / zero.length() + prefix.size(); i < width; ++i)
|
for (qsizetype i = numStr.size() / zero.size() + prefix.size(); i < width; ++i)
|
||||||
numStr.prepend(zero);
|
numStr.prepend(zero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3693,17 +3693,17 @@ QString QLocaleData::decimalForm(QString &&digits, int decpt, int precision,
|
|||||||
for (; decpt < 0; ++decpt)
|
for (; decpt < 0; ++decpt)
|
||||||
digits.prepend(zero);
|
digits.prepend(zero);
|
||||||
} else {
|
} else {
|
||||||
for (int i = digits.length() / digitWidth; i < decpt; ++i)
|
for (qsizetype i = digits.size() / digitWidth; i < decpt; ++i)
|
||||||
digits.append(zero);
|
digits.append(zero);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pm) {
|
switch (pm) {
|
||||||
case PMDecimalDigits:
|
case PMDecimalDigits:
|
||||||
for (int i = digits.length() / digitWidth - decpt; i < precision; ++i)
|
for (qsizetype i = digits.size() / digitWidth - decpt; i < precision; ++i)
|
||||||
digits.append(zero);
|
digits.append(zero);
|
||||||
break;
|
break;
|
||||||
case PMSignificantDigits:
|
case PMSignificantDigits:
|
||||||
for (int i = digits.length() / digitWidth; i < precision; ++i)
|
for (qsizetype i = digits.size() / digitWidth; i < precision; ++i)
|
||||||
digits.append(zero);
|
digits.append(zero);
|
||||||
break;
|
break;
|
||||||
case PMChopTrailingZeros:
|
case PMChopTrailingZeros:
|
||||||
@ -3716,7 +3716,7 @@ QString QLocaleData::decimalForm(QString &&digits, int decpt, int precision,
|
|||||||
|
|
||||||
if (groupDigits) {
|
if (groupDigits) {
|
||||||
const QString group = groupSeparator();
|
const QString group = groupSeparator();
|
||||||
int i = decpt - m_grouping_least;
|
qsizetype i = decpt - m_grouping_least;
|
||||||
if (i >= m_grouping_top) {
|
if (i >= m_grouping_top) {
|
||||||
digits.insert(i * digitWidth, group);
|
digits.insert(i * digitWidth, group);
|
||||||
while ((i -= m_grouping_higher) >= m_grouping_top)
|
while ((i -= m_grouping_higher) >= m_grouping_top)
|
||||||
@ -3741,11 +3741,11 @@ QString QLocaleData::exponentForm(QString &&digits, int decpt, int precision,
|
|||||||
|
|
||||||
switch (pm) {
|
switch (pm) {
|
||||||
case PMDecimalDigits:
|
case PMDecimalDigits:
|
||||||
for (int i = digits.length() / digitWidth; i < precision + 1; ++i)
|
for (qsizetype i = digits.size() / digitWidth; i < precision + 1; ++i)
|
||||||
digits.append(zero);
|
digits.append(zero);
|
||||||
break;
|
break;
|
||||||
case PMSignificantDigits:
|
case PMSignificantDigits:
|
||||||
for (int i = digits.length() / digitWidth; i < precision; ++i)
|
for (qsizetype i = digits.size() / digitWidth; i < precision; ++i)
|
||||||
digits.append(zero);
|
digits.append(zero);
|
||||||
break;
|
break;
|
||||||
case PMChopTrailingZeros:
|
case PMChopTrailingZeros:
|
||||||
@ -3819,11 +3819,11 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int
|
|||||||
|
|
||||||
const QString prefix = signPrefix(negative, flags) + basePrefix;
|
const QString prefix = signPrefix(negative, flags) + basePrefix;
|
||||||
// Count how much of width we've used up. Each digit counts as one
|
// Count how much of width we've used up. Each digit counts as one
|
||||||
int usedWidth = digitCount + prefix.size();
|
qsizetype usedWidth = digitCount + prefix.size();
|
||||||
|
|
||||||
if (base == 10 && flags & GroupDigits) {
|
if (base == 10 && flags & GroupDigits) {
|
||||||
const QString group = groupSeparator();
|
const QString group = groupSeparator();
|
||||||
int i = digitCount - m_grouping_least;
|
qsizetype i = digitCount - m_grouping_least;
|
||||||
if (i >= m_grouping_top) {
|
if (i >= m_grouping_top) {
|
||||||
numStr.insert(i * digitWidth, group);
|
numStr.insert(i * digitWidth, group);
|
||||||
++usedWidth;
|
++usedWidth;
|
||||||
@ -3839,7 +3839,7 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int
|
|||||||
if (noPrecision)
|
if (noPrecision)
|
||||||
precision = 1;
|
precision = 1;
|
||||||
|
|
||||||
for (int i = numStr.length(); i < precision; ++i) {
|
for (qsizetype i = numStr.size(); i < precision; ++i) {
|
||||||
numStr.prepend(zero);
|
numStr.prepend(zero);
|
||||||
usedWidth++;
|
usedWidth++;
|
||||||
}
|
}
|
||||||
@ -3847,7 +3847,7 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int
|
|||||||
// LeftAdjusted overrides ZeroPadded; and sprintf() only pads when
|
// LeftAdjusted overrides ZeroPadded; and sprintf() only pads when
|
||||||
// precision is not specified in the format string.
|
// precision is not specified in the format string.
|
||||||
if (noPrecision && flags & ZeroPadded && !(flags & LeftAdjusted)) {
|
if (noPrecision && flags & ZeroPadded && !(flags & LeftAdjusted)) {
|
||||||
for (int i = usedWidth; i < width; ++i)
|
for (qsizetype i = usedWidth; i < width; ++i)
|
||||||
numStr.prepend(zero);
|
numStr.prepend(zero);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3876,11 +3876,11 @@ bool QLocaleData::numberToCLocale(QStringView s, QLocale::NumberOptions number_o
|
|||||||
auto length = s.size();
|
auto length = s.size();
|
||||||
decltype(length) idx = 0;
|
decltype(length) idx = 0;
|
||||||
|
|
||||||
int digitsInGroup = 0;
|
qsizetype digitsInGroup = 0;
|
||||||
int decpt_idx = -1;
|
qsizetype decpt_idx = -1;
|
||||||
int last_separator_idx = -1;
|
qsizetype last_separator_idx = -1;
|
||||||
int start_of_digits_idx = -1;
|
qsizetype start_of_digits_idx = -1;
|
||||||
int exponent_idx = -1;
|
qsizetype exponent_idx = -1;
|
||||||
|
|
||||||
while (idx < length) {
|
while (idx < length) {
|
||||||
const QStringView in = QStringView(uc + idx, uc[idx].isHighSurrogate() ? 2 : 1);
|
const QStringView in = QStringView(uc + idx, uc[idx].isHighSurrogate() ? 2 : 1);
|
||||||
@ -4227,7 +4227,7 @@ QString QLocale::currencySymbol(QLocale::CurrencySymbolFormat format) const
|
|||||||
case CurrencyIsoCode: {
|
case CurrencyIsoCode: {
|
||||||
const char *code = d->m_data->m_currency_iso_code;
|
const char *code = d->m_data->m_currency_iso_code;
|
||||||
if (auto len = qstrnlen(code, 3))
|
if (auto len = qstrnlen(code, 3))
|
||||||
return QString::fromLatin1(code, int(len));
|
return QString::fromLatin1(code, qsizetype(len));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4424,12 +4424,12 @@ QStringList QLocale::uiLanguages() const
|
|||||||
{
|
{
|
||||||
locales.append(*this);
|
locales.append(*this);
|
||||||
}
|
}
|
||||||
for (int i = locales.size(); i-- > 0; ) {
|
for (qsizetype i = locales.size(); i-- > 0; ) {
|
||||||
const QLocale &locale = locales.at(i);
|
const QLocale &locale = locales.at(i);
|
||||||
const auto data = locale.d->m_data;
|
const auto data = locale.d->m_data;
|
||||||
QLocaleId id = data->id();
|
QLocaleId id = data->id();
|
||||||
|
|
||||||
int j;
|
qsizetype j;
|
||||||
QByteArray prior;
|
QByteArray prior;
|
||||||
if (isSystem && i < uiLanguages.size()) {
|
if (isSystem && i < uiLanguages.size()) {
|
||||||
// Adding likely-adjusted forms to system locale's list.
|
// Adding likely-adjusted forms to system locale's list.
|
||||||
|
@ -589,9 +589,9 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const
|
|||||||
case UILanguages: {
|
case UILanguages: {
|
||||||
QStringList result;
|
QStringList result;
|
||||||
QCFType<CFArrayRef> languages = CFLocaleCopyPreferredLanguages();
|
QCFType<CFArrayRef> languages = CFLocaleCopyPreferredLanguages();
|
||||||
const int cnt = CFArrayGetCount(languages);
|
const CFIndex cnt = CFArrayGetCount(languages);
|
||||||
result.reserve(cnt);
|
result.reserve(cnt);
|
||||||
for (int i = 0; i < cnt; ++i) {
|
for (CFIndex i = 0; i < cnt; ++i) {
|
||||||
const QString lang = QString::fromCFString(
|
const QString lang = QString::fromCFString(
|
||||||
static_cast<CFStringRef>(CFArrayGetValueAtIndex(languages, i)));
|
static_cast<CFStringRef>(CFArrayGetValueAtIndex(languages, i)));
|
||||||
result.append(lang);
|
result.append(lang);
|
||||||
|
@ -292,11 +292,11 @@ public:
|
|||||||
{
|
{
|
||||||
return { reinterpret_cast<const QChar *>(table + offset), size };
|
return { reinterpret_cast<const QChar *>(table + offset), size };
|
||||||
}
|
}
|
||||||
[[nodiscard]] QString getListEntry(const char16_t *table, int index) const
|
[[nodiscard]] QString getListEntry(const char16_t *table, qsizetype index) const
|
||||||
{
|
{
|
||||||
return listEntry(table, index).getData(table);
|
return listEntry(table, index).getData(table);
|
||||||
}
|
}
|
||||||
[[nodiscard]] QStringView viewListEntry(const char16_t *table, int index) const
|
[[nodiscard]] QStringView viewListEntry(const char16_t *table, qsizetype index) const
|
||||||
{
|
{
|
||||||
return listEntry(table, index).viewData(table);
|
return listEntry(table, index).viewData(table);
|
||||||
}
|
}
|
||||||
@ -309,7 +309,7 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
[[nodiscard]] DataRange listEntry(const char16_t *table, int index) const
|
[[nodiscard]] DataRange listEntry(const char16_t *table, qsizetype index) const
|
||||||
{
|
{
|
||||||
const char16_t separator = ';';
|
const char16_t separator = ';';
|
||||||
quint16 i = 0;
|
quint16 i = 0;
|
||||||
|
@ -224,7 +224,7 @@ QString QSystemLocalePrivate::substituteDigits(QString &&string)
|
|||||||
break;
|
break;
|
||||||
Q_ASSERT(z > '9');
|
Q_ASSERT(z > '9');
|
||||||
ushort *const qch = reinterpret_cast<ushort *>(string.data());
|
ushort *const qch = reinterpret_cast<ushort *>(string.data());
|
||||||
for (int i = 0, stop = string.size(); i < stop; ++i) {
|
for (qsizetype i = 0, stop = string.size(); i < stop; ++i) {
|
||||||
ushort &ch = qch[i];
|
ushort &ch = qch[i];
|
||||||
if (ch >= '0' && ch <= '9')
|
if (ch >= '0' && ch <= '9')
|
||||||
ch = unicodeForDigit(ch - '0', z);
|
ch = unicodeForDigit(ch - '0', z);
|
||||||
@ -434,7 +434,7 @@ QString QSystemLocalePrivate::yearFix(int year, int fakeYear, QString &&formatte
|
|||||||
if (formatted.contains(yearUsed))
|
if (formatted.contains(yearUsed))
|
||||||
return std::move(formatted).replace(yearUsed, sign + trueYear);
|
return std::move(formatted).replace(yearUsed, sign + trueYear);
|
||||||
|
|
||||||
const int twoDigits = 2 * zero.size();
|
const qsizetype twoDigits = 2 * zero.size();
|
||||||
tail = QStringView{yearUsed}.last(twoDigits);
|
tail = QStringView{yearUsed}.last(twoDigits);
|
||||||
if (formatted.contains(tail)) {
|
if (formatted.contains(tail)) {
|
||||||
if (matchTwo)
|
if (matchTwo)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user