17template<concepts::detail::ConstantString String>
22 constexpr explicit StringReader(U&& buffer) : m_buffer(util::forward<U>(buffer)) {}
27 for (
auto i : view::range(to_read)) {
28 data[i] = read_byte();
35 constexpr auto read_byte() ->
byte {
37 constexpr auto code_unit_size =
sizeof(CodeUnit);
39 auto word_index = m_byte_offset / code_unit_size;
40 auto byte_index = m_byte_offset % code_unit_size;
42 auto code_units = m_buffer.
span();
43 auto code_unit = code_units[word_index];
44 auto as_bytes = util::bit_cast<vocab::Array<byte, code_unit_size>>(code_unit);
51 usize m_byte_offset { 0 };
54template<
typename String>
constexpr auto span()
Definition string_impl.h:22
Definition string_reader.h:18
constexpr auto read_some(vocab::Span< byte > data) -> usize
Definition string_reader.h:24
constexpr StringReader(U &&buffer)
Definition string_reader.h:22
Definition span_forward_declaration.h:10
Definition operations.h:11
constexpr auto min
Definition min.h:47
string::StringImpl< string::Utf8Encoding > String
Definition string.h:11
StringReader(String &&) -> StringReader< String >
size_t usize
Definition integers.h:33
Definition zstring_parser.h:9
constexpr auto as_bytes
Definition as_bytes.h:16
constexpr auto data
Definition data.h:51