20 template<
typename Cont>
26 std::optional<V> Value_;
38 const auto pos = Children_.find (
view.toString ());
39 if (
pos == Children_.end ())
45 template<StringViewContainer Cont>
51 template<
typename It,
typename End>
60 const auto&
strRef = (*begin).toString ();
62 if (
pos == Children_.end ())
64 pos->Add (std::next (begin), end, std::move (
value));
83 std::initializer_list<QStringView>
dummy {
single };
87 template<StringViewContainer Cont>
93 template<
typename It,
typename End>
96 return Find (begin, end, {
Value_, end - begin,
this });
99 template<
typename It,
typename End>
108 const auto&
strRef = (*begin).toString ();
109 const auto pos = Children_.find (
strRef);
110 if (
pos == Children_.end ())
113 return pos->Find (std::next (begin), end,
lastGood);
void Add(It begin, End end, V value)
const std::optional< V > & GetValue() const
void Add(Cont &&path, V value)
FindResult Find(Cont &&path) const
const StringPathTrie * GetChild(QStringView view) const
FindResult Find(QStringView single) const
FindResult Find(It begin, End end) const
Container< T > Filter(const Container< T > &c, F f)
typename detail::Find< Name, Def, Args... >::type Find
bool operator==(const FindResult &other) const
static const StringPathTrie NullTrie
std::optional< V > Value_
const StringPathTrie * Rest_
std::ptrdiff_t Remaining_