di 0.1.0
Loading...
Searching...
No Matches
path_view_impl.h
Go to the documentation of this file.
1#pragma once
2
9#include "di/util/to_owned.h"
12
13namespace di::container {
14template<concepts::InstanceOf<string::StringImpl> Str>
15class PathImpl;
16
17template<concepts::Encoding Enc>
19 : public meta::EnableView<PathViewImpl<Enc>>
20 , public meta::EnableBorrowedContainer<PathViewImpl<Enc>>
21 , public ConstantPathInterface<PathViewImpl<Enc>, Enc>
22 , public util::OwnedType<PathViewImpl<Enc>, PathImpl<string::StringImpl<Enc>>> {
23private:
24 using View = string::StringViewImpl<Enc>;
25 using CodePoint = meta::EncodingCodePoint<Enc>;
26 using ViewIter = meta::ContainerIterator<View>;
27 using Iterator = PathIterator<Enc>;
28
29public:
30 using Encoding = Enc;
31
32 PathViewImpl() = default;
33
34 constexpr PathViewImpl(View view) : m_view(view) { this->compute_first_component_end(); }
35
36 constexpr PathViewImpl(Iterator start, Iterator end)
37 : PathViewImpl(View(encoding::assume_valid, start.current_data(), end.current_data())) {}
38
39 constexpr auto data() const -> View { return m_view; }
40
41private:
42 View m_view;
43};
44}
Definition constant_path_interface.h:16
constexpr auto view() const &-> PathView
Definition constant_path_interface.h:32
constexpr void compute_first_component_end()
Definition constant_path_interface.h:107
constexpr auto end() const
Definition constant_path_interface.h:47
Definition path_impl.h:14
Definition path_iterator.h:17
constexpr PathViewImpl(View view)
Definition path_view_impl.h:34
constexpr auto data() const -> View
Definition path_view_impl.h:39
constexpr PathViewImpl(Iterator start, Iterator end)
Definition path_view_impl.h:36
Definition view.h:35
Definition string_view_impl.h:19
Definition enable_borrowed_container.h:7
Definition enable_view.h:7
Definition sequence.h:12
RemoveCVRef< T >::CodePoint EncodingCodePoint
Definition encoding.h:19
decltype(container::begin(util::declval< T & >())) ContainerIterator
Definition container_iterator.h:8
Definition to_owned.h:29