#ifndef __CLOCKVECTOR_H__
#define __CLOCKVECTOR_H__
-#include "threads.h"
#include "mymemory.h"
-
-/* Forward declaration */
-class ModelAction;
+#include "modeltypes.h"
+#include "classlist.h"
class ClockVector {
public:
- ClockVector(ClockVector *parent = NULL, ModelAction *act = NULL);
+ ClockVector(ClockVector *parent = NULL, const ModelAction *act = NULL);
~ClockVector();
- void merge(ClockVector *cv);
- bool synchronized_since(ModelAction *act) const;
+ bool merge(const ClockVector *cv);
+ bool minmerge(const ClockVector *cv);
+ bool synchronized_since(const ModelAction *act) const;
void print() const;
+ modelclock_t getClock(thread_id_t thread);
- MEMALLOC
+ SNAPSHOTALLOC
private:
/** @brief Holds the actual clock data, as an array. */
- int *clock;
+ modelclock_t *clock;
/** @brief The number of threads recorded in clock (i.e., its length). */
int num_threads;
};
-#endif /* __CLOCKVECTOR_H__ */
+#endif /* __CLOCKVECTOR_H__ */