49 RONode* start = edges[0]->getFromNode();
50 unsigned lastStart = 0;
51 for (
unsigned i = 1; i < edges.size(); i++) {
52 if (edges[i]->getFromNode() == start) {
57 edges.erase(edges.begin(), edges.begin() + lastStart - 1);
61 RONode* end = edges.back()->getToNode();
62 size_t firstEnd = edges.size() - 1;
63 for (
unsigned i = 0; i < firstEnd; i++) {
64 if (edges[i]->getToNode() == end) {
68 if (firstEnd < edges.size() - 1) {
69 edges.erase(edges.begin() + firstEnd + 2, edges.end());
73 std::map<const ROEdge*, size_t> lastOccurence;
74 for (
size_t ii = 0; ii < edges.size(); ++ii) {
75 std::map<const ROEdge*, size_t>::iterator it_pre = lastOccurence.find(edges[ii]);
76 if (it_pre != lastOccurence.end()) {
77 edges.erase(edges.begin() + it_pre->second, edges.begin() + ii);
80 lastOccurence[edges[ii]] = ii;
void recheckForLoops(ConstROEdgeVector &edges)
Checks whether the given edge list contains loops and removes them.
std::vector< const ROEdge * > ConstROEdgeVector
Some helping methods for router.
Base class for nodes used by the router.