removing true nodes from the OrderGraph
[satune.git] / src / Encoders / orderencoder.h
index eb908976424266a270550e60d0fa755cdbdf9c0e..f9b4d5f2edb0fe2fdefcf35ee8b92be437a0edc6 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * File:   orderencoder.h
  * Author: hamed
  *
 #include "structs.h"
 #include "mymemory.h"
 
-enum NodeStatus {NOTVISITED, VISITED, FINISHED};
-typedef enum NodeStatus NodeStatus;
+void computeStronglyConnectedComponentGraph(OrderGraph *graph);
+void orderAnalysis(CSolver *solver);
+void initializeNodeInfoSCC(OrderGraph *graph);
+void DFSNodeVisit(OrderNode *node, VectorOrderNode *finishNodes, bool isReverse, bool mustvisit, uint sccNum);
+void DFS(OrderGraph *graph, VectorOrderNode *finishNodes);
+void DFSReverse(OrderGraph *graph, VectorOrderNode *finishNodes);
+void completePartialOrderGraph(OrderGraph *graph);
+void resetNodeInfoStatusSCC(OrderGraph *graph);
+bool isMustBeTrueNode(OrderNode* node);
+void bypassMustBeTrueNode(CSolver *This, OrderGraph* graph, OrderNode* node);
+void removeMustBeTrueNodes(CSolver *This, OrderGraph *graph);
+void completePartialOrderGraph(OrderGraph *graph);
+void DFSMust(OrderGraph *graph, VectorOrderNode *finishNodes);
+void DFSClearContradictions(CSolver *solver, OrderGraph *graph, VectorOrderNode *finishNodes, bool computeTransitiveClosure);
+void reachMustAnalysis(CSolver *solver, OrderGraph *graph, bool computeTransitiveClosure);
+void localMustAnalysisTotal(CSolver *solver, OrderGraph *graph);
+void localMustAnalysisPartial(CSolver *solver, OrderGraph *graph);
+void orderAnalysis(CSolver *This);
+void decomposeOrder(CSolver *This, Order *order, OrderGraph *graph);
 
-struct NodeInfo {
-       NodeStatus status;
-       uint finishTime;
-};
-
-NodeInfo* allocNodeInfo();
-void deleteNodeInfo(NodeInfo* info);
-
-OrderGraph* buildOrderGraph(Order *order);
-void computeStronglyConnectedComponentGraph(OrderGraph* graph);
-void orderAnalysis(CSolver* solver);
-void initializeNodeInfoSCC(OrderGraph* graph, HashTableNodeInfo* nodeToInfo);
-void DFSNodeVisit(OrderNode* node, VectorOrderNode* finishNodes, HashTableNodeInfo* nodeToInfo, uint* timer, bool isReverse);
-void DFS(OrderGraph* graph, VectorOrderNode* finishNodes, HashTableNodeInfo* nodeToInfo);
-void DFSReverse(OrderGraph* graph, VectorOrderNode* finishNodes, HashTableNodeInfo* nodeToInfo);
-
-#endif /* ORDERGRAPHBUILDER_H */
+#endif/* ORDERGRAPHBUILDER_H */