14template<concepts::Encoding Enc, concepts::detail::MutableVector Vec>
27 constexpr auto span() {
return m_vector.span(); }
28 constexpr auto span()
const {
return m_vector.span(); }
30 constexpr auto encoding() const -> Enc {
return m_encoding; }
32 constexpr auto capacity()
const {
return m_vector.capacity(); }
33 constexpr auto max_size()
const {
return m_vector.max_size(); }
36 constexpr auto grow_capacity(
usize min_capacity)
const {
return m_vector.grow_capacity(min_capacity); }
52 template<concepts::SameAs<types::Tag<
into_erased_
string>> T, concepts::SameAs<StringImpl> S>
56 { self.data(), self.size_code_units() + 1 }, (
void*) self.data(), (
void*) self.m_vector.capacity(),
nullptr,
59 case ErasedString::ThunkOp::Move:
60 src->m_state[0] = src->m_state[1] = nullptr;
63 case ErasedString::ThunkOp::Destroy:
64 if (dest->m_state[0] != nullptr) {
65 auto alloc = typename Vec::Allocator {};
66 di::deallocate_many<c8>(alloc, (c8*) dest->m_state[0], (size_t) dest->m_state[1]);
75 [[no_unique_address]] Vec m_vector;
76 [[no_unique_address]] Enc m_encoding {};
#define DI_ASSERT(...)
Definition assert_bool.h:7
Definition erased_string.h:21
ThunkOp
Definition erased_string.h:28
Definition mutable_string_interface.h:42
Definition string_impl.h:16
Enc Encoding
Definition string_impl.h:18
constexpr auto span()
Definition string_impl.h:27
constexpr auto max_size() const
Definition string_impl.h:33
constexpr auto encoding() const -> Enc
Definition string_impl.h:30
constexpr auto capacity() const
Definition string_impl.h:32
constexpr auto assume_size(usize n)
Definition string_impl.h:35
constexpr friend auto tag_invoke(T, S self) -> ErasedString
Definition string_impl.h:54
meta::EncodingIterator< Enc > Iterator
Definition string_impl.h:21
constexpr auto grow_capacity(usize min_capacity) const
Definition string_impl.h:36
constexpr auto span() const
Definition string_impl.h:28
constexpr auto reserve_from_nothing(usize n)
Definition string_impl.h:34
meta::EncodingCodePoint< Enc > CodePoint
Definition string_impl.h:20
meta::EncodingCodeUnit< Enc > CodeUnit
Definition string_impl.h:19
CodeUnit Value
Definition string_impl.h:22
constexpr auto take_underlying_vector() &&
Definition string_impl.h:38
CodeUnit const ConstValue
Definition string_impl.h:23
constexpr friend auto tag_invoke(types::Tag< util::create_in_place >, InPlaceType< StringImpl >, Vec &&storage)
Definition string_impl.h:43
constexpr auto validate
Definition encoding.h:135
constexpr auto universal
Definition encoding.h:61
Definition constant_string_interface.h:31
constexpr auto move
Definition move.h:38
size_t usize
Definition integers.h:33
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto in_place_type
Definition in_place_type.h:12
constexpr auto unsafe_forget
Steal ownership of an object and do not its destructor.
Definition unsafe_forget.h:32
Definition in_place_type.h:5