Iros
 
Loading...
Searching...
No Matches
read_exactly.h
Go to the documentation of this file.
1#pragma once
2
9
10namespace di::io {
11namespace detail {
13 template<concepts::Impl<Reader> Reader>
15 auto nread = usize { 0 };
16 while (nread < data.size()) {
17 auto n = DI_TRY(read_some(readr, *data.subspan(nread)));
18 DI_ASSERT(n > 0);
19 nread += n;
20 }
21 return {};
22 };
23 };
24}
25
26constexpr inline auto read_exactly = detail::ReadExactlyFunction {};
27}
28
29namespace di {
31}
#define DI_ASSERT(...)
Definition assert_bool.h:7
Definition span_forward_declaration.h:10
#define DI_TRY(...)
Definition monad_try.h:13
Definition reader.h:8
Definition reader.h:7
constexpr auto read_exactly
Definition read_exactly.h:26
constexpr auto read_some
Definition reader.h:32
meta::List< ReadSome > Reader
Definition reader.h:34
meta::LikeExpected< decltype(io::read_some(util::declval< Reader & >(), util::declval< Span< Byte > >())), T > ReaderResult
Definition reader.h:39
size_t usize
Definition integers.h:33
Definition zstring_parser.h:9
constexpr auto data
Definition data.h:51
Definition read_exactly.h:12
constexpr auto operator()(Reader &readr, Span< byte > data) const -> meta::ReaderResult< void, Reader >
Definition read_exactly.h:14