diff --git a/Userland/Libraries/LibCore/Stream.h b/Userland/Libraries/LibCore/Stream.h index 7e3cf6f23a..1351a41a8a 100644 --- a/Userland/Libraries/LibCore/Stream.h +++ b/Userland/Libraries/LibCore/Stream.h @@ -101,6 +101,13 @@ public: /// contents are written or an error occurs. virtual ErrorOr write_entire_buffer(ReadonlyBytes); + template + requires(requires(Stream& stream) { { T::read_from_stream(stream) } -> SameAs>; }) + ErrorOr read_value() + { + return T::read_from_stream(*this); + } + template requires(Traits::is_trivially_serializable()) ErrorOr read_value() @@ -110,6 +117,13 @@ public: return bit_cast(buffer); } + template + requires(requires(T t, Stream& stream) { { t.write_to_stream(stream) } -> SameAs>; }) + ErrorOr write_value(T const& value) + { + return value.write_to_stream(*this); + } + template requires(Traits::is_trivially_serializable()) ErrorOr write_value(T const& value)