- if (from->removed || to->removed) {
- HashsetOrderNode fromset, toset;
- // processNode(&fromset, from, true);
- // processNode(&toset, to, false);
- SetIteratorOrderNode *fromit=fromset.iterator();
- while(fromit->hasNext()) {
- OrderNode * nodefrom=fromit->next();
- SetIteratorOrderNode *toit=toset.iterator();
- while(toit->hasNext()) {
- OrderNode * nodeto=toit->next();
- if (resolveOrder(nodefrom->getID(), nodeto->getID())) {
- delete fromit;
- delete toit;
- return true;
- }
- }
- delete toit;
- }
- delete fromit;
- return false;
- } else if (from->sccNum != to->sccNum) {
- OrderEdge *edge = graph->lookupOrderEdgeFromOrderGraph(from, to);
- switch (graph->getOrder()->type) {
- case SATC_TOTAL:
- return from->sccNum < to->sccNum;
- case SATC_PARTIAL:
- return resolvePartialOrder(from, to);
- default:
- ASSERT(0);
- }
- } else {
- Order *suborder = NULL;
- // We should ask this query from the suborder ....
- suborder = orders.get(from->sccNum);
- ASSERT(suborder != NULL);
- return suborder->encoding.resolver->resolveOrder(from->id, to->id);