cyclegraph: map Promises to Promise nodes
[model-checker.git] / cyclegraph.cc
index 49c462f5375c0695bb07d10b18f82ee156a73b29..58cb79f22cdd573acf59e24976014c91731e6e7e 100644 (file)
@@ -47,6 +47,26 @@ CycleNode * CycleGraph::getNode(const ModelAction *action)
 }
 
 /**
+ * @brief Returns a CycleNode corresponding to a promise
+ *
+ * Gets (or creates, if none exist) a CycleNode corresponding to a promised
+ * value.
+ *
+ * @param promise The Promise generated by a reader
+ * @return The CycleNode corresponding to the Promise
+ */
+CycleNode * CycleGraph::getNode(const Promise *promise)
+{
+       const ModelAction *reader = promise->get_action();
+       CycleNode *node = readerToPromiseNode.get(reader);
+       if (node == NULL) {
+               node = new CycleNode(promise);
+               readerToPromiseNode.put(reader, node);
+       }
+       return node;
+}
+
+/*
  * @brief Adds an edge between objects
  *
  * This function will add an edge between any two objects which can be