Browse Source

AK: Remove the fallible constructor from `LittleEndianOutputBitStream`

Tim Schumacher 2 năm trước cách đây
mục cha
commit
8b2f23d016
3 tập tin đã thay đổi với 13 bổ sung18 xóa
  1. 2 7
      AK/BitStream.h
  2. 10 10
      Tests/AK/TestBitStream.cpp
  3. 1 1
      Userland/Libraries/LibCompress/Deflate.cpp

+ 2 - 7
AK/BitStream.h

@@ -303,9 +303,9 @@ private:
 /// in little-endian order to another stream.
 class LittleEndianOutputBitStream : public Stream {
 public:
-    static ErrorOr<NonnullOwnPtr<LittleEndianOutputBitStream>> construct(MaybeOwned<Stream> stream)
+    explicit LittleEndianOutputBitStream(MaybeOwned<Stream> stream)
+        : m_stream(move(stream))
     {
-        return adopt_nonnull_own_or_enomem<LittleEndianOutputBitStream>(new LittleEndianOutputBitStream(move(stream)));
     }
 
     virtual ErrorOr<Bytes> read(Bytes) override
@@ -372,11 +372,6 @@ public:
     }
 
 private:
-    LittleEndianOutputBitStream(MaybeOwned<Stream> stream)
-        : m_stream(move(stream))
-    {
-    }
-
     MaybeOwned<Stream> m_stream;
     u8 m_current_byte { 0 };
     size_t m_bit_offset { 0 };

+ 10 - 10
Tests/AK/TestBitStream.cpp

@@ -15,21 +15,21 @@ 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<AK::Stream>(*memory_stream)));
+    LittleEndianOutputBitStream bit_write_stream { MaybeOwned<AK::Stream>(*memory_stream) };
     LittleEndianInputBitStream bit_read_stream { MaybeOwned<AK::Stream>(*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));
+        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));
         EXPECT_EQ(0b1111u, result);
         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));
+        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));
         EXPECT_EQ(0b0000u, result);
         result = MUST(bit_read_stream.read_bits(4));
@@ -38,8 +38,8 @@ TEST_CASE(little_endian_bit_stream_input_output_match)
 
     // Test two mirrored chunks of a non-mirrored pattern to check that we are writing bits within a pattern in the correct order.
     {
-        MUST(bit_write_stream->write_bits(0b1000u, 4));
-        MUST(bit_write_stream->write_bits(0b1000u, 4));
+        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));
         EXPECT_EQ(0b1000u, result);
         result = MUST(bit_read_stream.read_bits(4));
@@ -48,8 +48,8 @@ TEST_CASE(little_endian_bit_stream_input_output_match)
 
     // Test two different chunks to check that we are not confusing their order.
     {
-        MUST(bit_write_stream->write_bits(0b1000u, 4));
-        MUST(bit_write_stream->write_bits(0b0100u, 4));
+        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));
         EXPECT_EQ(0b1000u, result);
         result = MUST(bit_read_stream.read_bits(4));
@@ -58,7 +58,7 @@ TEST_CASE(little_endian_bit_stream_input_output_match)
 
     // Test a pattern that spans multiple bytes.
     {
-        MUST(bit_write_stream->write_bits(0b1101001000100001u, 16));
+        MUST(bit_write_stream.write_bits(0b1101001000100001u, 16));
         auto result = MUST(bit_read_stream.read_bits(16));
         EXPECT_EQ(0b1101001000100001u, result);
     }

+ 1 - 1
Userland/Libraries/LibCompress/Deflate.cpp

@@ -449,7 +449,7 @@ ErrorOr<void> DeflateDecompressor::decode_codes(CanonicalCode& literal_code, Opt
 
 ErrorOr<NonnullOwnPtr<DeflateCompressor>> DeflateCompressor::construct(MaybeOwned<AK::Stream> stream, CompressionLevel compression_level)
 {
-    auto bit_stream = TRY(LittleEndianOutputBitStream::construct(move(stream)));
+    auto bit_stream = TRY(try_make<LittleEndianOutputBitStream>(move(stream)));
     auto deflate_compressor = TRY(adopt_nonnull_own_or_enomem(new (nothrow) DeflateCompressor(move(bit_stream), compression_level)));
     return deflate_compressor;
 }