removing true nodes from the OrderGraph
[satune.git] / src / Encoders / orderencoder.h
index b9d9c77c027e3bc53a23219126c8514b446c3ff4..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;
-
-struct NodeInfo {
-       NodeStatus status;
-       uint finishTime;
-};
-
-struct OrderEncoder{
-       VectorOrderGraph graphs;
-};
-
-NodeInfo* allocNodeInfo();
-void deleteNodeInfo(NodeInfo* info);
-OrderEncoder* allocOrderEncoder();
-void deleteOrderEncoder(OrderEncoder* This);
-
-OrderEncoder* buildOrderGraphs(CSolver* This);
-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 */
+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);
+
+#endif/* ORDERGRAPHBUILDER_H */