63 RONode* start = edges[0]->getFromNode();
64 unsigned lastStart = 0;
65 for (
unsigned i = 1; i < edges.size(); i++) {
66 if (edges[i]->getFromNode() == start) {
71 edges.erase(edges.begin(), edges.begin() + lastStart - 1);
75 RONode* end = edges.back()->getToNode();
76 size_t firstEnd = edges.size() - 1;
77 for (
unsigned i = 0; i < firstEnd; i++) {
78 if (edges[i]->getToNode() == end) {
82 if (firstEnd < edges.size() - 1) {
83 edges.erase(edges.begin() + firstEnd + 2, edges.end());
86 std::vector<RONode*> nodes;
87 for (std::vector<const ROEdge*>::iterator i = edges.begin(); i != edges.end(); ++i) {
88 nodes.push_back((*i)->getFromNode());
90 nodes.push_back(edges.back()->getToNode());
94 for (
unsigned int b = 0; b < nodes.size() && !changed; ++b) {
96 for (
unsigned int e = b + 1; e < nodes.size() && !changed; ++e) {
99 nodes.erase(nodes.begin() + b, nodes.begin() + e);
100 edges.erase(edges.begin() + b, edges.begin() + e);
112 std::ostream& operator<<(std::ostream& os, const std::vector<const ROEdge*> &ev) {
113 bool hadFirst =
false;
114 for (std::vector<const ROEdge*>::const_iterator j = ev.begin(); j != ev.end(); j++) {