-/*
+/*
* File: ordertransform.h
* Author: hamed
*
class DecomposeOrderTransform : public Transform {
public:
- DecomposeOrderTransform(CSolver* _solver);
- virtual ~DecomposeOrderTransform();
+ DecomposeOrderTransform(CSolver *_solver);
+ ~DecomposeOrderTransform();
void doTransform();
- void setOrderGraph(OrderGraph* _graph){
- currGraph = _graph;
- }
- void setCurrentOrder(Order* _current) { currOrder = _current;}
- bool canExecuteTransform();
+
CMEMALLOC;
- private:
- Order* currOrder;
- OrderGraph* currGraph;
+private:
+ 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 */