#include "structs.h"
#include "mymemory.h"
-struct OrderGraph {
+class OrderGraph {
+public:
+ OrderGraph(Order *order);
+ ~OrderGraph();
+ void addOrderConstraintToOrderGraph(BooleanOrder *bOrder);
+ void addMustOrderConstraintToOrderGraph(BooleanOrder *bOrder);
+ OrderNode *getOrderNodeFromOrderGraph(uint64_t id);
+ OrderEdge *getOrderEdgeFromOrderGraph(OrderNode *begin, OrderNode *end);
+ OrderNode *lookupOrderNodeFromOrderGraph(uint64_t id);
+ OrderEdge *lookupOrderEdgeFromOrderGraph(OrderNode *begin, OrderNode *end);
+ void addOrderEdge(OrderNode *node1, OrderNode *node2, BooleanOrder *constr);
+ void addMustOrderEdge(OrderNode *node1, OrderNode *node2, BooleanOrder *constr);
+ OrderEdge *getInverseOrderEdge(OrderEdge *edge);
+ Order *getOrder() {return order;}
+ SetIteratorOrderNode *getNodes() {return nodes->iterator();}
+ SetIteratorOrderEdge *getEdges() {return edges->iterator();}
+
+ CMEMALLOC;
+private:
HashSetOrderNode *nodes;
HashSetOrderEdge *edges;
Order *order;
};
-OrderGraph *allocOrderGraph(Order *order);
OrderGraph *buildOrderGraph(Order *order);
OrderGraph *buildMustOrderGraph(Order *order);
-void addOrderConstraintToOrderGraph(OrderGraph *graph, BooleanOrder *bOrder);
-void addMustOrderConstraintToOrderGraph(OrderGraph *graph, BooleanOrder *bOrder);
-OrderNode *getOrderNodeFromOrderGraph(OrderGraph *graph, uint64_t id);
-OrderEdge *getOrderEdgeFromOrderGraph(OrderGraph *graph, OrderNode *begin, OrderNode *end);
-OrderNode *lookupOrderNodeFromOrderGraph(OrderGraph *graph, uint64_t id);
-OrderEdge *lookupOrderEdgeFromOrderGraph(OrderGraph *graph, OrderNode *begin, OrderNode *end);
-void addOrderEdge(OrderGraph *graph, OrderNode *node1, OrderNode *node2, BooleanOrder *constr);
-void addMustOrderEdge(OrderGraph *graph, OrderNode *node1, OrderNode *node2, BooleanOrder *constr);
-void deleteOrderGraph(OrderGraph *graph);
-OrderEdge *getInverseOrderEdge(OrderGraph *graph, OrderEdge *edge);
#endif/* ORDERGRAPH_H */