summaryrefslogtreecommitdiffstats
path: root/src/network/access/qnetworkrequest.cpp
diff options
context:
space:
mode:
authorAnton Kudryavtsev <[email protected]>2023-08-25 16:49:09 +0300
committerAnton Kudryavtsev <[email protected]>2023-08-28 14:49:36 +0300
commit3730212312584e805927460d82bb9a0ef9c10f68 (patch)
tree76f02d25f1b777534ab0ccf6ec09d5d758c73a15 /src/network/access/qnetworkrequest.cpp
parent8db5896bbe9b7285abed2db681e80fd9110e2ba8 (diff)
qnetworkrequest: port parseMatchImpl to QBAV
to save allocations, and use tokenize to avoid temp container Change-Id: I2a43612b9d15538a93d4afd2c544714507141f0f Reviewed-by: MÃ¥rten Nordheim <[email protected]>
Diffstat (limited to 'src/network/access/qnetworkrequest.cpp')
-rw-r--r--src/network/access/qnetworkrequest.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 8e666db2b0c..a7a5ca5e391 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -1220,31 +1220,29 @@ static QVariant parseETag(QByteArrayView raw)
}
template<typename T>
-static QVariant parseMatchImpl(const QByteArray &raw, T op)
+static QVariant parseMatchImpl(QByteArrayView raw, T op)
{
- const QByteArray trimmedRaw = raw.trimmed();
+ const QByteArrayView trimmedRaw = raw.trimmed();
if (trimmedRaw == "*")
return QStringList(QStringLiteral("*"));
QStringList tags;
- const QList<QByteArray> split = trimmedRaw.split(',');
- for (const QByteArray &element : split) {
- const QByteArray trimmed = element.trimmed();
- if (!op(trimmed))
- continue;
- tags += QString::fromLatin1(trimmed);
+ for (auto &element : QLatin1StringView(trimmedRaw).tokenize(','_L1)) {
+ if (const auto trimmed = element.trimmed(); op(trimmed))
+ tags += QString::fromLatin1(trimmed);
}
return tags;
}
-static QVariant parseIfMatch(const QByteArray &raw)
+
+static QVariant parseIfMatch(QByteArrayView raw)
{
return parseMatchImpl(raw, [](QByteArrayView element) {
return element.startsWith('"') && element.endsWith('"');
});
}
-static QVariant parseIfNoneMatch(const QByteArray &raw)
+static QVariant parseIfNoneMatch(QByteArrayView raw)
{
return parseMatchImpl(raw, [](QByteArrayView element) {
return (element.startsWith('"') || element.startsWith(R"(W/")")) && element.endsWith('"');