From 6cdc2fc0f4bc944bda6a9d0abfa0512672cda43a Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 20 Jul 2022 21:23:32 +0200 Subject: 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 (cherry picked from commit 24e8a693cdf418a90559472addfd49637ff4e270) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/text/qlocale.cpp | 44 ++++++++++++++++++++-------------------- src/corelib/text/qlocale_mac.mm | 4 ++-- src/corelib/text/qlocale_p.h | 6 +++--- src/corelib/text/qlocale_win.cpp | 4 ++-- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp index df05e1378c..3cd281443c 100644 --- a/src/corelib/text/qlocale.cpp +++ b/src/corelib/text/qlocale.cpp @@ -177,7 +177,7 @@ QLocale::Script QLocalePrivate::codeToScript(QStringView code) noexcept unsigned char c3 = code[3].toLower().toLatin1(); 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]) return QLocale::Script(i); } @@ -3588,7 +3588,7 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form, Q_ASSERT(!zero.at(0).isSurrogate()); char16_t z = zero.at(0).unicode(); char16_t *const value = reinterpret_cast(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); } @@ -3636,7 +3636,7 @@ QString QLocaleData::doubleToString(double d, int precision, DoubleForm form, // Assume digitCount < 95, so we can ignore the 3-digit // exponent case (we'll set useDecimal false anyway). - const int digitCount = digits.length() / zero.size(); + const qsizetype digitCount = digits.size() / zero.size(); if (!mustMarkDecimal) { // Decimal separator is skipped if at end; adjust if // 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. 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); } } @@ -3693,17 +3693,17 @@ QString QLocaleData::decimalForm(QString &&digits, int decpt, int precision, for (; decpt < 0; ++decpt) digits.prepend(zero); } else { - for (int i = digits.length() / digitWidth; i < decpt; ++i) + for (qsizetype i = digits.size() / digitWidth; i < decpt; ++i) digits.append(zero); } switch (pm) { 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); break; case PMSignificantDigits: - for (int i = digits.length() / digitWidth; i < precision; ++i) + for (qsizetype i = digits.size() / digitWidth; i < precision; ++i) digits.append(zero); break; case PMChopTrailingZeros: @@ -3716,7 +3716,7 @@ QString QLocaleData::decimalForm(QString &&digits, int decpt, int precision, if (groupDigits) { const QString group = groupSeparator(); - int i = decpt - m_grouping_least; + qsizetype i = decpt - m_grouping_least; if (i >= m_grouping_top) { digits.insert(i * digitWidth, group); while ((i -= m_grouping_higher) >= m_grouping_top) @@ -3741,11 +3741,11 @@ QString QLocaleData::exponentForm(QString &&digits, int decpt, int precision, switch (pm) { 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); break; case PMSignificantDigits: - for (int i = digits.length() / digitWidth; i < precision; ++i) + for (qsizetype i = digits.size() / digitWidth; i < precision; ++i) digits.append(zero); break; case PMChopTrailingZeros: @@ -3819,11 +3819,11 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int const QString prefix = signPrefix(negative, flags) + basePrefix; // 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) { const QString group = groupSeparator(); - int i = digitCount - m_grouping_least; + qsizetype i = digitCount - m_grouping_least; if (i >= m_grouping_top) { numStr.insert(i * digitWidth, group); ++usedWidth; @@ -3839,7 +3839,7 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int if (noPrecision) precision = 1; - for (int i = numStr.length(); i < precision; ++i) { + for (qsizetype i = numStr.size(); i < precision; ++i) { numStr.prepend(zero); usedWidth++; } @@ -3847,7 +3847,7 @@ QString QLocaleData::applyIntegerFormatting(QString &&numStr, bool negative, int // LeftAdjusted overrides ZeroPadded; and sprintf() only pads when // precision is not specified in the format string. if (noPrecision && flags & ZeroPadded && !(flags & LeftAdjusted)) { - for (int i = usedWidth; i < width; ++i) + for (qsizetype i = usedWidth; i < width; ++i) numStr.prepend(zero); } @@ -3876,11 +3876,11 @@ bool QLocaleData::numberToCLocale(QStringView s, QLocale::NumberOptions number_o auto length = s.size(); decltype(length) idx = 0; - int digitsInGroup = 0; - int decpt_idx = -1; - int last_separator_idx = -1; - int start_of_digits_idx = -1; - int exponent_idx = -1; + qsizetype digitsInGroup = 0; + qsizetype decpt_idx = -1; + qsizetype last_separator_idx = -1; + qsizetype start_of_digits_idx = -1; + qsizetype exponent_idx = -1; while (idx < length) { const QStringView in = QStringView(uc + idx, uc[idx].isHighSurrogate() ? 2 : 1); @@ -4227,7 +4227,7 @@ QString QLocale::currencySymbol(QLocale::CurrencySymbolFormat format) const case CurrencyIsoCode: { const char *code = d->m_data->m_currency_iso_code; if (auto len = qstrnlen(code, 3)) - return QString::fromLatin1(code, int(len)); + return QString::fromLatin1(code, qsizetype(len)); break; } } @@ -4424,12 +4424,12 @@ QStringList QLocale::uiLanguages() const { locales.append(*this); } - for (int i = locales.size(); i-- > 0; ) { + for (qsizetype i = locales.size(); i-- > 0; ) { const QLocale &locale = locales.at(i); const auto data = locale.d->m_data; QLocaleId id = data->id(); - int j; + qsizetype j; QByteArray prior; if (isSystem && i < uiLanguages.size()) { // Adding likely-adjusted forms to system locale's list. diff --git a/src/corelib/text/qlocale_mac.mm b/src/corelib/text/qlocale_mac.mm index d410e13565..f3ca942845 100644 --- a/src/corelib/text/qlocale_mac.mm +++ b/src/corelib/text/qlocale_mac.mm @@ -589,9 +589,9 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const case UILanguages: { QStringList result; QCFType languages = CFLocaleCopyPreferredLanguages(); - const int cnt = CFArrayGetCount(languages); + const CFIndex cnt = CFArrayGetCount(languages); result.reserve(cnt); - for (int i = 0; i < cnt; ++i) { + for (CFIndex i = 0; i < cnt; ++i) { const QString lang = QString::fromCFString( static_cast(CFArrayGetValueAtIndex(languages, i))); result.append(lang); diff --git a/src/corelib/text/qlocale_p.h b/src/corelib/text/qlocale_p.h index 1af23b9ad1..60408dcae7 100644 --- a/src/corelib/text/qlocale_p.h +++ b/src/corelib/text/qlocale_p.h @@ -292,11 +292,11 @@ public: { return { reinterpret_cast(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); } - [[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); } @@ -309,7 +309,7 @@ public: return 0; } 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 = ';'; quint16 i = 0; diff --git a/src/corelib/text/qlocale_win.cpp b/src/corelib/text/qlocale_win.cpp index 4883547593..d395b1f0cd 100644 --- a/src/corelib/text/qlocale_win.cpp +++ b/src/corelib/text/qlocale_win.cpp @@ -224,7 +224,7 @@ QString QSystemLocalePrivate::substituteDigits(QString &&string) break; Q_ASSERT(z > '9'); ushort *const qch = reinterpret_cast(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]; if (ch >= '0' && ch <= '9') ch = unicodeForDigit(ch - '0', z); @@ -434,7 +434,7 @@ QString QSystemLocalePrivate::yearFix(int year, int fakeYear, QString &&formatte if (formatted.contains(yearUsed)) 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); if (formatted.contains(tail)) { if (matchTwo) -- cgit v1.2.3-59-g8ed1b