QHttpHeaders: move verify() into public class

Prepares for d == nullptr.

Pick-to: 6.7
Change-Id: Ie338f1635d64076d2d2b387fe0de8b3b1a8d0386
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
This commit is contained in:
Marc Mutz 2024-01-25 18:48:18 +01:00
parent 466f003865
commit 55ee5481bc
2 changed files with 15 additions and 16 deletions

View File

@ -91,15 +91,6 @@ public:
QHttpHeadersPrivate() = default; QHttpHeadersPrivate() = default;
QList<Header> headers; QList<Header> headers;
Q_ALWAYS_INLINE void verify([[maybe_unused]] qsizetype pos = 0,
[[maybe_unused]] qsizetype n = 1) const
{
Q_ASSERT(pos >= 0);
Q_ASSERT(pos <= headers.size());
Q_ASSERT(n >= 0);
Q_ASSERT(n <= headers.size() - pos);
}
}; };
QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QHttpHeadersPrivate) QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QHttpHeadersPrivate)
@ -812,7 +803,7 @@ bool QHttpHeaders::append(WellKnownHeader name, QAnyStringView value)
*/ */
bool QHttpHeaders::insert(qsizetype i, QAnyStringView name, QAnyStringView value) bool QHttpHeaders::insert(qsizetype i, QAnyStringView name, QAnyStringView value)
{ {
d->verify(i, 0); verify(i, 0);
if (!isValidHttpHeaderNameField(name) || !isValidHttpHeaderValueField(value)) if (!isValidHttpHeaderNameField(name) || !isValidHttpHeaderValueField(value))
return false; return false;
@ -826,7 +817,7 @@ bool QHttpHeaders::insert(qsizetype i, QAnyStringView name, QAnyStringView value
*/ */
bool QHttpHeaders::insert(qsizetype i, WellKnownHeader name, QAnyStringView value) bool QHttpHeaders::insert(qsizetype i, WellKnownHeader name, QAnyStringView value)
{ {
d->verify(i, 0); verify(i, 0);
if (!isValidHttpHeaderValueField(value)) if (!isValidHttpHeaderValueField(value))
return false; return false;
@ -846,7 +837,7 @@ bool QHttpHeaders::insert(qsizetype i, WellKnownHeader name, QAnyStringView valu
*/ */
bool QHttpHeaders::replace(qsizetype i, QAnyStringView name, QAnyStringView newValue) bool QHttpHeaders::replace(qsizetype i, QAnyStringView name, QAnyStringView newValue)
{ {
d->verify(i); verify(i);
if (!isValidHttpHeaderNameField(name) || !isValidHttpHeaderValueField(newValue)) if (!isValidHttpHeaderNameField(name) || !isValidHttpHeaderValueField(newValue))
return false; return false;
@ -860,7 +851,7 @@ bool QHttpHeaders::replace(qsizetype i, QAnyStringView name, QAnyStringView newV
*/ */
bool QHttpHeaders::replace(qsizetype i, WellKnownHeader name, QAnyStringView newValue) bool QHttpHeaders::replace(qsizetype i, WellKnownHeader name, QAnyStringView newValue)
{ {
d->verify(i); verify(i);
if (!isValidHttpHeaderValueField(newValue)) if (!isValidHttpHeaderValueField(newValue))
return false; return false;
@ -920,7 +911,7 @@ void QHttpHeaders::removeAll(WellKnownHeader name)
*/ */
void QHttpHeaders::removeAt(qsizetype i) void QHttpHeaders::removeAt(qsizetype i)
{ {
d->verify(i); verify(i);
d.detach(); d.detach();
d->headers.removeAt(i); d->headers.removeAt(i);
} }
@ -980,7 +971,7 @@ QList<QByteArray> QHttpHeaders::values(WellKnownHeader name) const
*/ */
QByteArrayView QHttpHeaders::valueAt(qsizetype i) const noexcept QByteArrayView QHttpHeaders::valueAt(qsizetype i) const noexcept
{ {
d->verify(i); verify(i);
return d->headers.at(i).value; return d->headers.at(i).value;
} }
@ -994,7 +985,7 @@ QByteArrayView QHttpHeaders::valueAt(qsizetype i) const noexcept
*/ */
QLatin1StringView QHttpHeaders::nameAt(qsizetype i) const noexcept QLatin1StringView QHttpHeaders::nameAt(qsizetype i) const noexcept
{ {
d->verify(i); verify(i);
return QLatin1StringView{d->headers.at(i).name}; return QLatin1StringView{d->headers.at(i).name};
} }

View File

@ -260,6 +260,14 @@ private:
#ifndef QT_NO_DEBUG_STREAM #ifndef QT_NO_DEBUG_STREAM
friend Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QHttpHeaders &headers); friend Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QHttpHeaders &headers);
#endif #endif
Q_ALWAYS_INLINE void verify([[maybe_unused]] qsizetype pos = 0,
[[maybe_unused]] qsizetype n = 1) const
{
Q_ASSERT(pos >= 0);
Q_ASSERT(pos <= size());
Q_ASSERT(n >= 0);
Q_ASSERT(n <= size() - pos);
}
QExplicitlySharedDataPointer<QHttpHeadersPrivate> d; QExplicitlySharedDataPointer<QHttpHeadersPrivate> d;
}; };