|
@@ -101,6 +101,13 @@ public:
|
|
/// contents are written or an error occurs.
|
|
/// contents are written or an error occurs.
|
|
virtual ErrorOr<void> write_entire_buffer(ReadonlyBytes);
|
|
virtual ErrorOr<void> write_entire_buffer(ReadonlyBytes);
|
|
|
|
|
|
|
|
+ template<typename T>
|
|
|
|
+ requires(requires(Stream& stream) { { T::read_from_stream(stream) } -> SameAs<ErrorOr<T>>; })
|
|
|
|
+ ErrorOr<T> read_value()
|
|
|
|
+ {
|
|
|
|
+ return T::read_from_stream(*this);
|
|
|
|
+ }
|
|
|
|
+
|
|
template<typename T>
|
|
template<typename T>
|
|
requires(Traits<T>::is_trivially_serializable())
|
|
requires(Traits<T>::is_trivially_serializable())
|
|
ErrorOr<T> read_value()
|
|
ErrorOr<T> read_value()
|
|
@@ -110,6 +117,13 @@ public:
|
|
return bit_cast<T>(buffer);
|
|
return bit_cast<T>(buffer);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ template<typename T>
|
|
|
|
+ requires(requires(T t, Stream& stream) { { t.write_to_stream(stream) } -> SameAs<ErrorOr<void>>; })
|
|
|
|
+ ErrorOr<void> write_value(T const& value)
|
|
|
|
+ {
|
|
|
|
+ return value.write_to_stream(*this);
|
|
|
|
+ }
|
|
|
|
+
|
|
template<typename T>
|
|
template<typename T>
|
|
requires(Traits<T>::is_trivially_serializable())
|
|
requires(Traits<T>::is_trivially_serializable())
|
|
ErrorOr<void> write_value(T const& value)
|
|
ErrorOr<void> write_value(T const& value)
|