#include "clockvector.h"
#include "common.h"
+/**
+ * Constructs a new ClockVector, given a parent ClockVector and a first
+ * ModelAction. This constructor can assign appropriate default settings if no
+ * parent and/or action is supplied.
+ * @param parent is the previous ClockVector to inherit (i.e., clock from the
+ * same thread or the parent that created this thread)
+ * @param act is an action with which to update the ClockVector
+ */
ClockVector::ClockVector(ClockVector *parent, ModelAction *act)
{
num_threads = model->get_num_threads();
clock[id_to_int(act->get_tid())] = act->get_seq_number();
}
+/** @brief Destructor */
ClockVector::~ClockVector()
{
MYFREE(clock);
}
+/**
+ * Merge a clock vector into this vector, using a pairwise vector. The
+ * resulting vector length will be the maximum length of the two being merged.
+ * @param cv is the ClockVector being merged into this vector.
+ */
void ClockVector::merge(ClockVector *cv)
{
int *clk = clock;
}
/**
+ * Check whether this vector's thread has synchronized with another action's
+ * thread. This effectively checks the happens-before relation (or actually,
+ * happens after), but it's easier to compare two ModelAction events directly,
+ * using ModelAction::happens_before.
+ *
+ * @see ModelAction::happens_before
*
* @return true if this ClockVector's thread has synchronized with act's
* thread, false otherwise. That is, this function returns:
return false;
}
+/** @brief Formats and prints this ClockVector's data. */
void ClockVector::print()
{
int i;