+ bool checkReachable(const ModelAction *from, const ModelAction *to);
+ void startChanges();
+ void commitChanges();
+ void rollbackChanges();
+#if SUPPORT_MOD_ORDER_DUMP
+ void dumpGraphToFile(const char * filename);
+#endif
+
+ SNAPSHOTALLOC
private:
CycleNode * getNode(const ModelAction *);
/** @brief A table for mapping ModelActions to CycleNodes */
HashTable<const ModelAction *, CycleNode *, uintptr_t, 4> actionToNode;
private:
CycleNode * getNode(const ModelAction *);
/** @brief A table for mapping ModelActions to CycleNodes */
HashTable<const ModelAction *, CycleNode *, uintptr_t, 4> actionToNode;
bool checkReachable(CycleNode *from, CycleNode *to);
/** @brief A flag: true if this graph contains cycles */
bool hasCycles;
bool checkReachable(CycleNode *from, CycleNode *to);
/** @brief A flag: true if this graph contains cycles */
bool hasCycles;
};
/** @brief A node within a CycleGraph; corresponds to one ModelAction */
class CycleNode {
public:
CycleNode(const ModelAction *action);
};
/** @brief A node within a CycleGraph; corresponds to one ModelAction */
class CycleNode {
public:
CycleNode(const ModelAction *action);