74 std::unique_ptr<Graph> g = std::make_unique<Graph>();
106 std::vector<std::unique_ptr<FourBlockTree>>
children;
119 static std::unique_ptr<FourBlockTree> construct(
const Graph& g,
adjEntry externalFace);
130 template<
typename _F>
134 std::vector<std::unique_ptr<FourBlockTree>>::const_iterator nextChild;
137 std::vector<stackEntry> stack;
138 stack.push_back({
this, children.begin()});
140 while (!stack.empty()) {
141 auto& it = stack.back().nextChild;
142 if (it != stack.back().node->children.end()) {
145 stack.push_back({child, child->
children.begin()});
162 template<
typename _F>
166 std::vector<std::unique_ptr<FourBlockTree>>::iterator nextChild;
169 std::vector<stackEntry> stack;
170 stack.push_back({
this, children.begin()});
172 while (!stack.empty()) {
173 auto& it = stack.back().nextChild;
174 if (it != stack.back().node->children.end()) {
177 stack.push_back({child, child->
children.begin()});
194 template<
typename _F>
198 std::vector<std::unique_ptr<FourBlockTree>>::const_iterator nextChild;
201 std::vector<stackEntry> stack;
202 stack.push_back({
this, children.begin()});
203 while (!stack.empty()) {
204 auto& it = stack.back().nextChild;
205 if (it != stack.back().node->children.end()) {
208 stack.push_back({child, child->
children.begin()});
210 callback(*stack.back().node);
225 template<
typename _F>
229 std::vector<std::unique_ptr<FourBlockTree>>::iterator nextChild;
232 std::vector<stackEntry> stack;
233 stack.push_back({
this, children.begin()});
234 while (!stack.empty()) {
235 auto& it = stack.back().nextChild;
236 if (it != stack.back().node->children.end()) {
239 stack.push_back({child, child->
children.begin()});
241 callback(*stack.back().node);