* If the fromnode has a rmwnode, we should
* follow its RMW chain to add an edge at the end.
*/
- while (fromnode->getRMW()) {
- CycleNode *nextnode = fromnode->getRMW();
+ while (CycleNode * nextnode = fromnode->getRMW()) {
if (nextnode == tonode)
break;
fromnode = nextnode;
CycleNode *dst = cn->edges[i];
dst->removeInEdge(cn);
}
+ for(unsigned int i=0;i<cn->inedges.size();i++) {
+ CycleNode *src = cn->inedges[i];
+ src->removeEdge(cn);
+ }
delete cn;
}
}
}
+void CycleNode::removeEdge(CycleNode *dst) {
+ for(unsigned int i=0;i < edges.size();i++) {
+ if (edges[i] == dst) {
+ edges[i] = edges[edges.size()-1];
+ edges.pop_back();
+ break;
+ }
+ }
+}
+
/**
* @param i The index of the edge to return
* @returns The CycleNode edge indexed by i