3 * File: DecomposeOrderResolver.h
6 * Created on September 1, 2017, 10:36 AM
9 #ifndef DECOMPOSEORDERRESOLVER_H
10 #define DECOMPOSEORDERRESOLVER_H
11 #include "classlist.h"
14 #include "orderresolver.h"
18 DOREdge(uint64_t _origfirst, uint64_t _origsecond, uint _orderindex, uint64_t _newfirst, uint64_t _newsecond) :
19 origfirst(_origfirst),
20 origsecond(_origsecond),
21 orderindex(_orderindex),
23 newsecond(_newsecond) {
33 class DecomposeOrderResolver : public OrderResolver {
35 DecomposeOrderResolver(Order *_order);
36 virtual bool resolveOrder(uint64_t first, uint64_t second);
37 virtual ~DecomposeOrderResolver();
38 void mustOrderEdge(uint64_t first, uint64_t second);
39 void remapEdge(uint64_t oldfirst, uint64_t oldsecond, uint64_t newfirst, uint64_t newsecond);
40 void setEdgeOrder(uint64_t first, uint64_t second, uint sccNum);
41 void setOrder(uint sccNum, Order *order);
42 Order *getOrder(uint sccNum);
46 bool resolvePartialOrder(OrderNode *first, OrderNode *second);
50 Vector<Order *> orders;
54 #endif/* DECOMPOSEORDERRESOLVER_H */