13template<concepts::InstanceOf<
string::StringImpl> Str>
18 template<concepts::ContainerCompatible<meta::EncodingCodeUnit<Enc>> Con,
typename... Args>
19 requires(concepts::CreatableFrom<Str, Con, Args...>)
42 constexpr auto data()
const {
return m_data.view(); }
45 requires(
string::encoding::NullTerminated<Enc>)
47 return m_data.c_str();
56 template<concepts::ContainerCompatible<meta::EncodingCodePo
int<Enc>> Con>
63 if (first_code_point == CodePoint(
'/')) {
68 if (!m_data.empty() && !m_data.ends_with(CodePoint(
'/'))) {
70 return m_data.push_back(CodePoint(
'/'));
90 template<concepts::ContainerCompatible<meta::EncodingCodePo
int<Enc>> Con>
92 constexpr auto operator/=(Con&&
container) ->
decltype(
auto) {
98 template<concepts::ContainerCompatible<meta::EncodingCodePo
int<Enc>> Con>
101 return m_data.append(util::forward<Con>(
container)) % [&](
auto&&) {
108 template<concepts::ContainerCompatible<meta::EncodingCodePo
int<Enc>> Con>
110 constexpr auto operator+=(Con&&
container) ->
decltype(
auto) {
116 constexpr void clear() { m_data.clear(); }
121 template<concepts::ContainerCompatible<meta::EncodingCodePo
int<Enc>> Con>
123 constexpr friend auto operator/(
PathImpl&& lhs, Con&& rhs) {
124 return as_fallible(lhs.append(util::forward<Con>(rhs))) % [&](
auto&&) {
125 return util::move(lhs);
130 return util::move(lhs);
Definition constant_path_interface.h:16
constexpr auto view() const &-> PathView
Definition constant_path_interface.h:31
constexpr void compute_first_component_end()
Definition constant_path_interface.h:106
Definition path_view_impl.h:15
Enc Encoding
Definition path_impl.h:36
constexpr auto concat(Con &&container) -> decltype(auto)
Definition path_impl.h:100
constexpr auto append(Con &&container) -> decltype(auto)
Definition path_impl.h:58
constexpr auto take_underlying_string() &&
Definition path_impl.h:118
friend auto operator/(PathImpl &&lhs, PathImpl const &rhs)
Definition path_impl.h:133
constexpr auto operator+=(PathViewImpl< Enc > view) -> decltype(auto)
Definition path_impl.h:113
constexpr auto concat(PathViewImpl< Enc > view) -> decltype(auto)
Definition path_impl.h:105
constexpr auto c_str() const
Definition path_impl.h:44
constexpr auto operator+=(PathImpl const &other) -> decltype(auto)
Definition path_impl.h:114
friend auto operator/(PathImpl &&lhs, PathViewImpl< Enc > rhs)
Definition path_impl.h:128
constexpr friend auto tag_invoke(types::Tag< util::create_in_place >, InPlaceType< PathImpl >, PathViewImpl< Enc > view)
Definition path_impl.h:29
constexpr auto append(PathViewImpl< Enc > view) -> decltype(auto)
Definition path_impl.h:87
constexpr auto clone() const
Definition path_impl.h:50
constexpr auto data() const
Definition path_impl.h:42
constexpr auto append(PathImpl const &other) -> decltype(auto)
Definition path_impl.h:88
constexpr friend auto tag_invoke(types::Tag< util::create_in_place >, InPlaceType< PathImpl >, Con &&container, Args &&... args)
Definition path_impl.h:20
constexpr void clear()
Definition path_impl.h:116
constexpr PathImpl(Str &&string)
Definition path_impl.h:40
constexpr auto concat(PathImpl const &other) -> decltype(auto)
Definition path_impl.h:106
constexpr auto operator/=(PathImpl const &other) -> decltype(auto)
Definition path_impl.h:96
constexpr auto operator/=(PathViewImpl< Enc > view) -> decltype(auto)
Definition path_impl.h:95
Definition path_view_impl.h:22
constexpr auto data() const -> View
Definition path_view_impl.h:35
Definition forward_container.h:8
Definition constant_string_interface.h:31
constexpr auto empty
Definition empty.h:45
constexpr auto move
Definition move.h:38
constexpr auto begin
Definition begin.h:44
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
constexpr auto ref
Definition reference_wrapper.h:98
constexpr auto clone
Definition clone.h:39
constexpr auto create(Args &&... args)
Definition create.h:21
constexpr auto invoke_as_fallible
Definition invoke_as_fallible.h:37
constexpr auto if_error
Definition if_error.h:28
constexpr auto as_fallible
Definition as_fallible.h:26
constexpr auto try_infallible
Definition try_infallible.h:31
Definition in_place_type.h:5