nodestack: improve bounds-checking assertion
[model-checker.git] / clockvector.h
index 615dfeb7e83196dff11213ed589ceaaadc7b2196..6a902c5215342bae0313d56b3e6cfa8267bd79cf 100644 (file)
@@ -1,7 +1,12 @@
+/** @file clockvector.h
+ *  @brief Implements a clock vector.
+ */
+
 #ifndef __CLOCKVECTOR_H__
 #define __CLOCKVECTOR_H__
 
-#include "threads.h"
+#include "mymemory.h"
+#include "modeltypes.h"
 
 /* Forward declaration */
 class ModelAction;
@@ -10,10 +15,19 @@ class ClockVector {
 public:
        ClockVector(ClockVector *parent = NULL, ModelAction *act = NULL);
        ~ClockVector();
-       void merge(ClockVector *cv);
-       bool happens_before(ModelAction *act, thread_id_t id);
+       void merge(const ClockVector *cv);
+       bool synchronized_since(const ModelAction *act) const;
+       bool has_synchronized_with(const ClockVector *cv) const;
+
+       void print() const;
+       modelclock_t getClock(thread_id_t thread);
+
+       SNAPSHOTALLOC
 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;
 };