5 * Created on August 8, 2017, 6:36 PM
8 #ifndef ORDERGRAPHBUILDER_H
9 #define ORDERGRAPHBUILDER_H
10 #include "classlist.h"
14 enum NodeStatus {NOTVISITED, VISITED, FINISHED};
15 typedef enum NodeStatus NodeStatus;
23 VectorOrderGraph graphs;
26 NodeInfo* allocNodeInfo();
27 void deleteNodeInfo(NodeInfo* info);
28 OrderEncoder* allocOrderEncoder();
29 void deleteOrderEncoder(OrderEncoder* This);
31 OrderEncoder* buildOrderGraphs(CSolver* This);
32 OrderGraph* buildOrderGraph(Order *order);
33 void computeStronglyConnectedComponentGraph(OrderGraph* graph);
34 void orderAnalysis(CSolver* solver);
35 void initializeNodeInfoSCC(OrderGraph* graph, HashTableNodeInfo* nodeToInfo);
36 void DFSNodeVisit(OrderNode* node, VectorOrderNode* finishNodes, HashTableNodeInfo* nodeToInfo, uint* timer, bool isReverse);
37 void DFS(OrderGraph* graph, VectorOrderNode* finishNodes, HashTableNodeInfo* nodeToInfo);
38 void DFSReverse(OrderGraph* graph, VectorOrderNode* finishNodes, HashTableNodeInfo* nodeToInfo);
40 #endif /* ORDERGRAPHBUILDER_H */