mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
AK: Add OutputMemoryStream class.
This commit is contained in:
parent
3a2658951b
commit
7efd2a6d59
Notes:
sideshowbarker
2024-07-19 02:56:34 +09:00
Author: https://github.com/asynts Commit: https://github.com/SerenityOS/serenity/commit/7efd2a6d59d Pull-request: https://github.com/SerenityOS/serenity/pull/3376
3 changed files with 29 additions and 0 deletions
|
@ -53,6 +53,7 @@ class InputMemoryStream;
|
|||
class DuplexMemoryStream;
|
||||
class OutputStream;
|
||||
class InputBitStream;
|
||||
class OutputMemoryStream;
|
||||
|
||||
template<size_t Capacity>
|
||||
class CircularDuplexStream;
|
||||
|
@ -150,6 +151,7 @@ using AK::LogStream;
|
|||
using AK::NonnullOwnPtr;
|
||||
using AK::NonnullRefPtr;
|
||||
using AK::Optional;
|
||||
using AK::OutputMemoryStream;
|
||||
using AK::OutputStream;
|
||||
using AK::OwnPtr;
|
||||
using AK::ReadonlyBytes;
|
||||
|
|
|
@ -308,8 +308,24 @@ private:
|
|||
size_t m_base_offset { 0 };
|
||||
};
|
||||
|
||||
class OutputMemoryStream final : public OutputStream {
|
||||
public:
|
||||
size_t write(ReadonlyBytes bytes) override { return m_stream.write(bytes); }
|
||||
bool write_or_error(ReadonlyBytes bytes) override { return m_stream.write_or_error(bytes); }
|
||||
|
||||
ByteBuffer copy_into_contiguous_buffer() const { return m_stream.copy_into_contiguous_buffer(); }
|
||||
|
||||
Optional<size_t> offset_of(ReadonlyBytes value) const { return m_stream.offset_of(value); }
|
||||
|
||||
size_t size() const { return m_stream.woffset(); }
|
||||
|
||||
private:
|
||||
DuplexMemoryStream m_stream;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
using AK::DuplexMemoryStream;
|
||||
using AK::InputMemoryStream;
|
||||
using AK::InputStream;
|
||||
using AK::OutputMemoryStream;
|
||||
|
|
|
@ -160,4 +160,15 @@ TEST_CASE(read_endian_values)
|
|||
EXPECT_EQ(value2, 0x04050607u);
|
||||
}
|
||||
|
||||
TEST_CASE(write_endian_values)
|
||||
{
|
||||
const u8 expected[] { 4, 3, 2, 1, 1, 2, 3, 4 };
|
||||
|
||||
OutputMemoryStream stream;
|
||||
stream << LittleEndian<u32> { 0x01020304 } << BigEndian<u32> { 0x01020304 };
|
||||
|
||||
EXPECT_EQ(stream.size(), 8u);
|
||||
EXPECT(compare({ expected, sizeof(expected) }, stream.copy_into_contiguous_buffer()));
|
||||
}
|
||||
|
||||
TEST_MAIN(MemoryStream)
|
||||
|
|
Loading…
Reference in a new issue