diff --git a/AK/BitStream.h b/AK/BitStream.h index 4cd2023e716..775a23c5fb7 100644 --- a/AK/BitStream.h +++ b/AK/BitStream.h @@ -121,12 +121,7 @@ private: /// in little-endian order from another stream. class LittleEndianInputBitStream : public Stream { public: - static ErrorOr> construct(MaybeOwned stream) - { - return adopt_nonnull_own_or_enomem(new LittleEndianInputBitStream(move(stream))); - } - - LittleEndianInputBitStream(MaybeOwned stream) + explicit LittleEndianInputBitStream(MaybeOwned stream) : m_stream(move(stream)) { } diff --git a/Tests/AK/TestBitStream.cpp b/Tests/AK/TestBitStream.cpp index 92f1a6bf532..1e48050bc70 100644 --- a/Tests/AK/TestBitStream.cpp +++ b/Tests/AK/TestBitStream.cpp @@ -16,23 +16,23 @@ TEST_CASE(little_endian_bit_stream_input_output_match) // Note: The bit stream only ever reads from/writes to the underlying stream in one byte chunks, // so testing with sizes that will not trigger a write will yield unexpected results. auto bit_write_stream = MUST(LittleEndianOutputBitStream::construct(MaybeOwned(*memory_stream))); - auto bit_read_stream = MUST(LittleEndianInputBitStream::construct(MaybeOwned(*memory_stream))); + LittleEndianInputBitStream bit_read_stream { MaybeOwned(*memory_stream) }; // Test two mirrored chunks of a fully mirrored pattern to check that we are not dropping bits. { MUST(bit_write_stream->write_bits(0b1111u, 4)); MUST(bit_write_stream->write_bits(0b1111u, 4)); - auto result = MUST(bit_read_stream->read_bits(4)); + auto result = MUST(bit_read_stream.read_bits(4)); EXPECT_EQ(0b1111u, result); - result = MUST(bit_read_stream->read_bits(4)); + result = MUST(bit_read_stream.read_bits(4)); EXPECT_EQ(0b1111u, result); } { MUST(bit_write_stream->write_bits(0b0000u, 4)); MUST(bit_write_stream->write_bits(0b0000u, 4)); - auto result = MUST(bit_read_stream->read_bits(4)); + auto result = MUST(bit_read_stream.read_bits(4)); EXPECT_EQ(0b0000u, result); - result = MUST(bit_read_stream->read_bits(4)); + result = MUST(bit_read_stream.read_bits(4)); EXPECT_EQ(0b0000u, result); } @@ -40,9 +40,9 @@ TEST_CASE(little_endian_bit_stream_input_output_match) { MUST(bit_write_stream->write_bits(0b1000u, 4)); MUST(bit_write_stream->write_bits(0b1000u, 4)); - auto result = MUST(bit_read_stream->read_bits(4)); + auto result = MUST(bit_read_stream.read_bits(4)); EXPECT_EQ(0b1000u, result); - result = MUST(bit_read_stream->read_bits(4)); + result = MUST(bit_read_stream.read_bits(4)); EXPECT_EQ(0b1000u, result); } @@ -50,16 +50,16 @@ TEST_CASE(little_endian_bit_stream_input_output_match) { MUST(bit_write_stream->write_bits(0b1000u, 4)); MUST(bit_write_stream->write_bits(0b0100u, 4)); - auto result = MUST(bit_read_stream->read_bits(4)); + auto result = MUST(bit_read_stream.read_bits(4)); EXPECT_EQ(0b1000u, result); - result = MUST(bit_read_stream->read_bits(4)); + result = MUST(bit_read_stream.read_bits(4)); EXPECT_EQ(0b0100u, result); } // Test a pattern that spans multiple bytes. { MUST(bit_write_stream->write_bits(0b1101001000100001u, 16)); - auto result = MUST(bit_read_stream->read_bits(16)); + auto result = MUST(bit_read_stream.read_bits(16)); EXPECT_EQ(0b1101001000100001u, result); } } diff --git a/Tests/LibCompress/TestDeflate.cpp b/Tests/LibCompress/TestDeflate.cpp index 9cb2ec94605..8e50430d22d 100644 --- a/Tests/LibCompress/TestDeflate.cpp +++ b/Tests/LibCompress/TestDeflate.cpp @@ -29,10 +29,10 @@ TEST_CASE(canonical_code_simple) auto const huffman = Compress::CanonicalCode::from_bytes(code).value(); auto memory_stream = MUST(FixedMemoryStream::construct(input)); - auto bit_stream = MUST(LittleEndianInputBitStream::construct(move(memory_stream))); + LittleEndianInputBitStream bit_stream { move(memory_stream) }; for (size_t idx = 0; idx < 9; ++idx) - EXPECT_EQ(MUST(huffman.read_symbol(*bit_stream)), output[idx]); + EXPECT_EQ(MUST(huffman.read_symbol(bit_stream)), output[idx]); } TEST_CASE(canonical_code_complex) @@ -49,10 +49,10 @@ TEST_CASE(canonical_code_complex) auto const huffman = Compress::CanonicalCode::from_bytes(code).value(); auto memory_stream = MUST(FixedMemoryStream::construct(input)); - auto bit_stream = MUST(LittleEndianInputBitStream::construct(move(memory_stream))); + LittleEndianInputBitStream bit_stream { move(memory_stream) }; for (size_t idx = 0; idx < 12; ++idx) - EXPECT_EQ(MUST(huffman.read_symbol(*bit_stream)), output[idx]); + EXPECT_EQ(MUST(huffman.read_symbol(bit_stream)), output[idx]); } TEST_CASE(deflate_decompress_compressed_block) diff --git a/Userland/Libraries/LibPDF/DocumentParser.cpp b/Userland/Libraries/LibPDF/DocumentParser.cpp index 86f98e79810..08ab1298474 100644 --- a/Userland/Libraries/LibPDF/DocumentParser.cpp +++ b/Userland/Libraries/LibPDF/DocumentParser.cpp @@ -599,7 +599,7 @@ PDFErrorOr> DocumentParser::par auto input_stream = TRY(FixedMemoryStream::construct(hint_stream_bytes)); TRY(input_stream->seek(sizeof(PageOffsetHintTable))); - auto bit_stream = TRY(LittleEndianInputBitStream::construct(move(input_stream))); + LittleEndianInputBitStream bit_stream { move(input_stream) }; auto number_of_pages = m_linearization_dictionary.value().number_of_pages; Vector entries; @@ -620,7 +620,7 @@ PDFErrorOr> DocumentParser::par for (int i = 0; i < number_of_pages; i++) { auto& entry = entries[i]; - entry.*field = TRY(bit_stream->read_bits(bit_size)); + entry.*field = TRY(bit_stream.read_bits(bit_size)); } return {}; @@ -636,7 +636,7 @@ PDFErrorOr> DocumentParser::par items.ensure_capacity(number_of_shared_objects); for (size_t i = 0; i < number_of_shared_objects; i++) - items.unchecked_append(TRY(bit_stream->read_bits(bit_size))); + items.unchecked_append(TRY(bit_stream.read_bits(bit_size))); entries[page].*field = move(items); }