1#ifndef GENERATOR_MERGEPath_HPP
2#define GENERATOR_MERGEPath_HPP
12template<
typename... Path>
20template<
typename Head,
typename... Tail>
30 return head_.generate();
31 return tail_.generate() + head_vertex_count_;
46 all_done_ = tail_.done() && head_.done();
53 int head_vertex_count_;
58 : head_{path.head_.triangles()}
59 , tail_(path.tail_.triangles())
60 , head_vertex_count_{
count(path.head_.vertices())}
61 , all_done_{tail_.done() && head_.done()}
74 return head_.generate();
75 return tail_.generate();
90 all_done_ = tail_.done() && head_.done();
99 : head_{path.head_.vertices()}
100 , tail_(path.tail_.vertices())
101 , all_done_{tail_.done() && head_.done()}
127template<
typename... Path>
Empty path with zero vertices and edges.
bool done() const noexcept
bool done() const noexcept
path_vertex_t generate() const
merge_path_t(Head head, Tail... tail)
edges_t edges() const noexcept
vertices_t vertices() const noexcept
Merges (concatenates) multiple paths together.
merge_path_t< Path... > merge_path(Path... paths)
int count(const generator_t &generator) noexcept
Counts the number of steps left in the generator.