-/*
+/*
* File: ordertransform.h
* Author: hamed
*
class DecomposeOrderTransform : public Transform {
public:
- DecomposeOrderTransform(CSolver* _solver, Order* order, Tunables _tunable, TunableDesc* _desc);
- virtual ~DecomposeOrderTransform();
+ DecomposeOrderTransform(CSolver *_solver);
+ ~DecomposeOrderTransform();
void doTransform();
- void setOrderGraph(OrderGraph* _graph){
- graph = _graph;
- }
- bool canExecuteTransform();
+
+ CMEMALLOC;
private:
- Order* order;
- OrderGraph* graph;
+ bool isMustBeTrueNode(OrderNode *node);
+ void bypassMustBeTrueNode(OrderGraph *graph, OrderNode *node, DecomposeOrderResolver *dor);
+ void decomposeOrder(Order *currOrder, OrderGraph *currGraph, DecomposeOrderResolver *dor);
+ void removeMustBeTrueNodes(OrderGraph *graph, DecomposeOrderResolver *dor);
+ void mustEdgePrune(OrderGraph *graph, DecomposeOrderResolver *dor);
+ void attemptNodeMerge(OrderGraph *graph, OrderNode *node, DecomposeOrderResolver *dor);
+ void mergeNodes(OrderGraph *graph, OrderNode *node, OrderEdge *edge, OrderNode *dstnode, DecomposeOrderResolver *dor);
};
-#endif /* ORDERTRANSFORM_H */
+
+
+#endif/* ORDERTRANSFORM_H */