CycleNode *tonode = getNode(to);
if (!hasCycles)
- hasCycles = edgeCreatesCycle(fromnode, tonode);
+ hasCycles = checkReachable(tonode, fromnode);
if (fromnode->addEdge(tonode))
rollbackvector.push_back(fromnode);
*/
if (rmwnode != NULL && !to->is_rmw()) {
if (!hasCycles)
- hasCycles = edgeCreatesCycle(rmwnode, tonode);
+ hasCycles = checkReachable(tonode, rmwnode);
if (rmwnode->addEdge(tonode))
rollbackvector.push_back(rmwnode);
}
if (!hasCycles)
- hasCycles = edgeCreatesCycle(fromnode, rmwnode);
+ hasCycles = checkReachable(rmwnode, fromnode);
if (fromnode->addEdge(rmwnode))
rollbackvector.push_back(fromnode);
}
#endif
-/**
- * Checks whether the addition of an edge between these two nodes would create
- * a cycle in the graph.
- * @param from The CycleNode from which the edge would start
- * @param to The CycleNode to which the edge would point
- * @return True if this edge would create a cycle; false otherwise
- */
-bool CycleGraph::edgeCreatesCycle(const CycleNode *from, const CycleNode *to) const
-{
- return (from == to) || checkReachable(to, from);
-}
-
/**
* Checks whether one ModelAction can reach another.
* @param from The ModelAction from which to begin exploration
bool checkReachable(const CycleNode *from, const CycleNode *to) const;
- bool edgeCreatesCycle(const CycleNode *from, const CycleNode *to) const;
-
/** @brief A flag: true if this graph contains cycles */
bool hasCycles;
bool oldCycles;