1#ifndef GENERATOR_MERGESHAPE_HPP
2#define GENERATOR_MERGESHAPE_HPP
12template<
typename... shape_t>
20template<
typename Head,
typename... Tail>
30 return head_.generate();
32 edge_t edge = tail_.generate();
49 all_done_ = tail_.done() && head_.done();
56 int head_vertex_count_;
61 : head_{shape.head_.edges()}
62 , tail_(shape.tail_.edges())
63 , head_vertex_count_{
count(shape.head_.vertices())}
64 , all_done_{tail_.done() && head_.done()}
77 return head_.generate();
78 return tail_.generate();
93 all_done_ = tail_.done() && head_.done();
102 : head_{shape.head_.vertices()}
103 , tail_(shape.tail_.vertices())
104 , all_done_{tail_.done() && head_.done()}
130template<
typename... shape_t>
Empty shape with zero vertices and edges.
bool done() const noexcept
bool done() const noexcept
shape_vertex_t generate() const
vertices_t vertices() const noexcept
merge_shape_t(Head head, Tail... tail)
edges_t edges() const noexcept
Merges (concatenates) multiple shapes together.
merge_shape_t< shape_t... > merge_shape(shape_t... shapes)
int count(const generator_t &generator) noexcept
Counts the number of steps left in the generator.