Saving the best tuner settings + bug fixes
[satune.git] / src / ASTTransform / decomposeordertransform.h
1 /*
2  * File:   ordertransform.h
3  * Author: hamed
4  *
5  * Created on August 28, 2017, 10:35 AM
6  */
7
8 #ifndef ORDERTRANSFORM_H
9 #define ORDERTRANSFORM_H
10 #include "classlist.h"
11 #include "transform.h"
12
13
14 class DecomposeOrderTransform : public Transform {
15 public:
16         DecomposeOrderTransform(CSolver *_solver);
17         ~DecomposeOrderTransform();
18         void doTransform();
19
20         CMEMALLOC;
21 private:
22         bool isMustBeTrueNode(OrderNode *node);
23         void bypassMustBeTrueNode(OrderGraph *graph, OrderNode *node, DecomposeOrderResolver *dor);
24         void decomposeOrder(Order *currOrder, OrderGraph *currGraph, DecomposeOrderResolver *dor);
25         void removeMustBeTrueNodes(OrderGraph *graph, DecomposeOrderResolver *dor);
26         void mustEdgePrune(OrderGraph *graph, DecomposeOrderResolver *dor);
27         void attemptNodeMerge(OrderGraph *graph, OrderNode *node, DecomposeOrderResolver *dor);
28         void mergeNodes(OrderGraph *graph, OrderNode *node, OrderEdge *edge, OrderNode *dstnode, DecomposeOrderResolver *dor);
29 };
30
31
32
33 #endif/* ORDERTRANSFORM_H */
34