cyclegraph: template-ize checkReachable()
authorBrian Norris <banorris@uci.edu>
Sat, 2 Feb 2013 01:47:57 +0000 (17:47 -0800)
committerBrian Norris <banorris@uci.edu>
Wed, 6 Feb 2013 21:44:38 +0000 (13:44 -0800)
ModelChecker will need to query the mo_graph regarding the modification
order of promised future writes.

cyclegraph.cc
cyclegraph.h

index 46b0d4ac4eb803df74d57e53148d0d463f343e26..54b91238d98b2d22155a45a838da9a3b655d376c 100644 (file)
@@ -275,12 +275,13 @@ void CycleGraph::dumpGraphToFile(const char *filename) const
 #endif
 
 /**
- * Checks whether one ModelAction can reach another.
+ * Checks whether one ModelAction can reach another ModelAction/Promise
  * @param from The ModelAction from which to begin exploration
- * @param to The ModelAction to reach
+ * @param to The ModelAction or Promise to reach
  * @return True, @a from can reach @a to; otherwise, false
  */
-bool CycleGraph::checkReachable(const ModelAction *from, const ModelAction *to) const
+template <typename T>
+bool CycleGraph::checkReachable(const ModelAction *from, const T *to) const
 {
        CycleNode *fromnode = actionToNode.get(from);
        CycleNode *tonode = actionToNode.get(to);
index c0bd7d66167aea6bd71fa323efb29e18a57dfac4..c9c575ab36cdce5c8e9bc8445b0bce21837d8f99 100644 (file)
@@ -33,7 +33,10 @@ class CycleGraph {
        bool checkForCycles() const;
        void addRMWEdge(const ModelAction *from, const ModelAction *rmw);
        bool checkPromise(const ModelAction *from, Promise *p) const;
-       bool checkReachable(const ModelAction *from, const ModelAction *to) const;
+
+       template <typename T>
+       bool checkReachable(const ModelAction *from, const T *to) const;
+
        void startChanges();
        void commitChanges();
        void rollbackChanges();