X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=cyclegraph.h;h=c0bd7d66167aea6bd71fa323efb29e18a57dfac4;hb=d3dffe991352938e5c2ab738ce70e3ec0f069d5f;hp=e7e9380bb7e67e195d3d2ab95b587a44aa0234aa;hpb=5467ad92b9043ee54e3c64d661277751c43a355f;p=model-checker.git diff --git a/cyclegraph.h b/cyclegraph.h index e7e9380..c0bd7d6 100644 --- a/cyclegraph.h +++ b/cyclegraph.h @@ -19,6 +19,8 @@ class Promise; class CycleNode; class ModelAction; +typedef std::vector< const Promise *, ModelAlloc > promise_list_t; + /** @brief A graph of Model Actions for tracking cycles. */ class CycleGraph { public: @@ -40,12 +42,17 @@ class CycleGraph { void dumpGraphToFile(const char *filename) const; #endif + bool resolvePromise(ModelAction *reader, ModelAction *writer, + promise_list_t *mustResolve); + SNAPSHOTALLOC private: void addNodeEdge(CycleNode *fromnode, CycleNode *tonode); void putNode(const ModelAction *act, CycleNode *node); CycleNode * getNode(const ModelAction *); CycleNode * getNode(const Promise *promise); + bool mergeNodes(CycleNode *node1, CycleNode *node2, + promise_list_t *mustMerge); HashTable *discovered;