OrderGraph *buildOrderGraph(Order *order) {
ASSERT(order->graph == NULL);
OrderGraph *orderGraph = new OrderGraph(order);
- order->graph = orderGraph;
uint constrSize = order->constraints.getSize();
for (uint j = 0; j < constrSize; j++) {
orderGraph->addOrderConstraintToOrderGraph(order->constraints.get(j));
node = tmp;
} else {
nodes.add(node);
- allNodes.push(node);
}
return node;
}
}
OrderGraph::~OrderGraph() {
- uint size=allNodes.getSize();
- for(uint i=0;i<size;i++)
- delete allNodes.get(i);
-
- SetIteratorOrderEdge *eiterator = edges.iterator();
- while (eiterator->hasNext()) {
- OrderEdge *edge = eiterator->next();
- delete edge;
- }
- delete eiterator;
+ nodes.resetAndDelete();
+ edges.resetAndDelete();
}
bool OrderGraph::isTherePath(OrderNode *source, OrderNode *destination) {
SetIteratorOrderNode *iterator = getNodes();
while (iterator->hasNext()) {
OrderNode *node = iterator->next();
- if (node->status == NOTVISITED) {
+ if (node->status == NOTVISITED && !node->removed) {
node->status = VISITED;
DFSNodeVisit(node, finishNodes, false, false, 0);
node->status = FINISHED;
SetIteratorOrderNode *iterator = getNodes();
while (iterator->hasNext()) {
OrderNode *node = iterator->next();
- if (node->status == NOTVISITED) {
+ if (node->status == NOTVISITED && !node->removed) {
node->status = VISITED;
DFSNodeVisit(node, finishNodes, false, true, 0);
node->status = FINISHED;