model: release_seq_head - rewrite RMW recursion as loop
[model-checker.git] / clockvector.h
index d233cdd136c46f7e00c547f9ac1d4be95d62cdee..f2716dbd90497c9f260b1730bee9d25bc9c622fd 100644 (file)
@@ -8,6 +8,7 @@
 #include "threads.h"
 #include "mymemory.h"
 
+typedef unsigned int modelclock_t;
 /* Forward declaration */
 class ModelAction;
 
@@ -15,14 +16,19 @@ class ClockVector {
 public:
        ClockVector(ClockVector *parent = NULL, ModelAction *act = NULL);
        ~ClockVector();
-       void merge(ClockVector *cv);
-       bool synchronized_since(ModelAction *act);
+       void merge(const ClockVector *cv);
+       bool synchronized_since(const ModelAction *act) const;
+       bool has_synchronized_with(const ClockVector *cv) const;
 
-       void print();
+       void print() const;
+       modelclock_t getClock(thread_id_t thread);
 
        MEMALLOC
 private:
-       int *clock;
+       /** @brief Holds the actual clock data, as an array. */
+       modelclock_t *clock;
+
+       /** @brief The number of threads recorded in clock (i.e., its length).  */
        int num_threads;
 };