Iros
 
Loading...
Searching...
No Matches
fixed_string_to_utf8_string_view.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/meta/algorithm.h"
7
8namespace di::container {
9namespace detail {
10 template<container::FixedString literal, size_t... indices>
11 constexpr inline c8 const as_c8_buffer[sizeof...(indices)] = { static_cast<char>(literal.data()[indices])... };
12
13 template<FixedString literal>
15 consteval auto operator()() const {
16 return function::unpack<meta::MakeIndexSequence<literal.size()>>(
17 []<usize... indices>(meta::ListV<indices...>) {
18 if constexpr (literal.size() == 0) {
20 } else {
21 auto span = Span { as_c8_buffer<literal, indices...> };
24 span };
25 }
26 });
27 }
28 };
29}
30
31template<FixedString literal>
33}
#define DI_ASSERT(...)
Definition assert_bool.h:7
Definition string_view_impl_forward_declaration.h:7
Definition utf8_encoding.h:107
Definition span_forward_declaration.h:10
Definition sequence.h:13
constexpr c8 const as_c8_buffer[sizeof...(indices)]
Definition fixed_string_to_utf8_string_view.h:11
constexpr auto validate
Definition encoding.h:135
constexpr auto assume_valid
Definition encoding.h:236
Definition sequence.h:12
FixedString(char const (&)[size]) -> FixedString< size - 1 >
constexpr auto fixed_string_to_utf8_string_view
Definition fixed_string_to_utf8_string_view.h:32
constexpr auto unpack
Definition unpack.h:24
MakeIntegerSequence< usize, count > MakeIndexSequence
Definition algorithm.h:285
size_t usize
Definition integers.h:33
char8_t c8
Definition char.h:4
Definition fixed_string_to_utf8_string_view.h:14
consteval auto operator()() const
Definition fixed_string_to_utf8_string_view.h:15
Definition core.h:8