Pass HPack::BitPattern by value

It is a small and trivially copyable type.

Found by an Axivion scan.

As a drive-by, forward-declare struct BitPattern at namespace scope
instead of in the argument of a function declaration.

Task-number: QTBUG-125026
Pick-to: 6.7 6.5
Change-Id: Ic3f58cb71a0fd0ad5b0555767af879e813612e72
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(cherry picked from commit 9a41ea0934a745aa4e33280a2cf7a45372cb4073)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Mate Barany 2024-07-05 16:38:02 +02:00 committed by Qt Cherry-pick Bot
parent 68608585a5
commit 504968117a
2 changed files with 13 additions and 13 deletions

View File

@ -35,7 +35,7 @@ struct BitPattern
uchar bitLength; uchar bitLength;
}; };
bool operator == (const BitPattern &lhs, const BitPattern &rhs) bool operator==(BitPattern lhs, BitPattern rhs)
{ {
return lhs.bitLength == rhs.bitLength && lhs.value == rhs.value; return lhs.bitLength == rhs.bitLength && lhs.value == rhs.value;
} }
@ -60,19 +60,19 @@ const BitPattern LiteralNoIndexing = {0, 4};
const BitPattern LiteralNeverIndexing = {1, 4}; const BitPattern LiteralNeverIndexing = {1, 4};
const BitPattern SizeUpdate = {1, 3}; const BitPattern SizeUpdate = {1, 3};
bool is_literal_field(const BitPattern &pattern) bool is_literal_field(BitPattern pattern)
{ {
return pattern == LiteralIncrementalIndexing return pattern == LiteralIncrementalIndexing
|| pattern == LiteralNoIndexing || pattern == LiteralNoIndexing
|| pattern == LiteralNeverIndexing; || pattern == LiteralNeverIndexing;
} }
void write_bit_pattern(const BitPattern &pattern, BitOStream &outputStream) void write_bit_pattern(BitPattern pattern, BitOStream &outputStream)
{ {
outputStream.writeBits(pattern.value, pattern.bitLength); outputStream.writeBits(pattern.value, pattern.bitLength);
} }
bool read_bit_pattern(const BitPattern &pattern, BitIStream &inputStream) bool read_bit_pattern(BitPattern pattern, BitIStream &inputStream)
{ {
uchar chunk = 0; uchar chunk = 0;
@ -319,7 +319,7 @@ bool Encoder::encodeIndexedField(BitOStream &outputStream, quint32 index) const
return true; return true;
} }
bool Encoder::encodeLiteralField(BitOStream &outputStream, const BitPattern &fieldType, bool Encoder::encodeLiteralField(BitOStream &outputStream, BitPattern fieldType,
const QByteArray &name, const QByteArray &value, const QByteArray &name, const QByteArray &value,
bool withCompression) bool withCompression)
{ {
@ -347,7 +347,7 @@ bool Encoder::encodeLiteralField(BitOStream &outputStream, const BitPattern &fie
return true; return true;
} }
bool Encoder::encodeLiteralField(BitOStream &outputStream, const BitPattern &fieldType, bool Encoder::encodeLiteralField(BitOStream &outputStream, BitPattern fieldType,
quint32 nameIndex, const QByteArray &value, quint32 nameIndex, const QByteArray &value,
bool withCompression) bool withCompression)
{ {
@ -451,7 +451,7 @@ bool Decoder::decodeSizeUpdate(BitIStream &inputStream)
return false; return false;
} }
bool Decoder::decodeLiteralField(const BitPattern &fieldType, BitIStream &inputStream) bool Decoder::decodeLiteralField(BitPattern fieldType, BitIStream &inputStream)
{ {
// https://http2.github.io/http2-spec/compression.html // https://http2.github.io/http2-spec/compression.html
// 6.2.1, 6.2.2, 6.2.3 // 6.2.1, 6.2.2, 6.2.3
@ -481,7 +481,7 @@ bool Decoder::decodeLiteralField(const BitPattern &fieldType, BitIStream &inputS
return false; return false;
} }
bool Decoder::processDecodedField(const BitPattern &fieldType, bool Decoder::processDecodedField(BitPattern fieldType,
const QByteArray &name, const QByteArray &name,
const QByteArray &value) const QByteArray &value)
{ {

View File

@ -32,7 +32,7 @@ namespace HPack
using HttpHeader = std::vector<HeaderField>; using HttpHeader = std::vector<HeaderField>;
HeaderSize header_size(const HttpHeader &header); HeaderSize header_size(const HttpHeader &header);
struct BitPattern;
class Q_AUTOTEST_EXPORT Encoder class Q_AUTOTEST_EXPORT Encoder
{ {
public: public:
@ -66,13 +66,13 @@ private:
bool encodeLiteralField(BitOStream &outputStream, bool encodeLiteralField(BitOStream &outputStream,
const struct BitPattern &fieldType, BitPattern fieldType,
quint32 nameIndex, quint32 nameIndex,
const QByteArray &value, const QByteArray &value,
bool withCompression); bool withCompression);
bool encodeLiteralField(BitOStream &outputStream, bool encodeLiteralField(BitOStream &outputStream,
const BitPattern &fieldType, BitPattern fieldType,
const QByteArray &name, const QByteArray &name,
const QByteArray &value, const QByteArray &value,
bool withCompression); bool withCompression);
@ -101,10 +101,10 @@ private:
bool decodeIndexedField(BitIStream &inputStream); bool decodeIndexedField(BitIStream &inputStream);
bool decodeSizeUpdate(BitIStream &inputStream); bool decodeSizeUpdate(BitIStream &inputStream);
bool decodeLiteralField(const BitPattern &fieldType, bool decodeLiteralField(BitPattern fieldType,
BitIStream &inputStream); BitIStream &inputStream);
bool processDecodedField(const BitPattern &fieldType, bool processDecodedField(BitPattern fieldType,
const QByteArray &name, const QByteArray &name,
const QByteArray &value); const QByteArray &value);