1 #include "orderresolver.h"
2 #include "ordergraph.h"
6 OrderResolver::OrderResolver(OrderGraph* _graph)
11 OrderResolver::~OrderResolver(){
15 HappenedBefore OrderResolver::resolveOrder(uint64_t first, uint64_t second){
16 OrderNode *from = graph->getOrderNodeFromOrderGraph(first, false /*Don't create new node if doesn't exist*/);
18 return SATC_UNORDERED;
20 OrderNode *to = graph->getOrderNodeFromOrderGraph(second, false);
22 return SATC_UNORDERED;
24 if (from->sccNum != to->sccNum) {
25 OrderEdge *edge = graph->getOrderEdgeFromOrderGraph(from, to, false /* Don't create a new edge*/);
26 if (edge != NULL && edge->mustPos){
28 } else if( edge != NULL && edge->mustNeg){
32 //It's a case that either there's no edge, or there is an edge
33 // but we don't know the value! (This case shouldn't happen)
34 //return from->sccNum < to->sccNum? SATC_FIRST: SATC_SECOND;
37 return getOrder(from, to);