diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2021-06-02 08:45:10 +0200 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2021-06-12 02:19:46 +0200 |
commit | 77d62727d0c1c638b904ada8fc720de2a4d60a6e (patch) | |
tree | 54f9fc406f10c53ec99809eb9f545940bbec35bf /src/corelib/time | |
parent | 523ee5577a3fb1801dc765511c2c76753c10a72e (diff) |
QTimeZonePrivate::territory: use QStringTokenizer
A follow-up to 6ec3321875b9fb2f72cc875ba191aa8123e7d5a5 where the
function was optimized using a hand-rolled lazy-split on a QBAView.
Now that QLatin1String::indexOf(QLatin1String) has been optimized we can
use QStringTokenizer instead.
Change-Id: I30b15d309e7c364c0a4dafe31651b39ea14db7e5
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/time')
-rw-r--r-- | src/corelib/time/qtimezoneprivate.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/corelib/time/qtimezoneprivate.cpp b/src/corelib/time/qtimezoneprivate.cpp index 2e2079255d..f71e489224 100644 --- a/src/corelib/time/qtimezoneprivate.cpp +++ b/src/corelib/time/qtimezoneprivate.cpp @@ -177,12 +177,10 @@ QLocale::Territory QTimeZonePrivate::territory() const for (int i = 0; i < zoneDataTableSize; ++i) { const QZoneData *data = zoneData(i); QByteArrayView idView = ianaIdView(data); - while (!idView.isEmpty()) { - qsizetype index = idView.indexOf(' '); - QByteArrayView next = index == -1 ? idView : idView.first(index); - if (next == m_id) - return (QLocale::Territory)data->territory; - idView = index == -1 ? QByteArrayView() : idView.sliced(index + 1); + QLatin1String view(idView.data(), idView.size()); + for (QLatin1String token : view.tokenize(QLatin1String(" "))) { + if (token == QLatin1String(m_id.data(), m_id.size())) + return QLocale::Territory(data->territory); } } return QLocale::AnyTerritory; |