| 266 | /** Stitch connected components together in a DepGraph, guaranteeing its corresponding cluster is connected. */ |
| 267 | template<typename BS> |
| 268 | void MakeConnected(DepGraph<BS>& depgraph) |
| 269 | { |
| 270 | auto todo = depgraph.Positions(); |
| 271 | auto comp = depgraph.FindConnectedComponent(todo); |
| 272 | Assume(depgraph.IsConnected(comp)); |
| 273 | todo -= comp; |
| 274 | while (todo.Any()) { |
| 275 | auto nextcomp = depgraph.FindConnectedComponent(todo); |
| 276 | Assume(depgraph.IsConnected(nextcomp)); |
| 277 | depgraph.AddDependencies(BS::Singleton(comp.Last()), nextcomp.First()); |
| 278 | todo -= nextcomp; |
| 279 | comp = nextcomp; |
| 280 | } |
| 281 | } |
| 282 | |
| 283 | /** Given a dependency graph, and a todo set, read a topological subset of todo from reader. */ |
| 284 | template<typename SetType> |
no test coverage detected