#define SIMGRID_MC_TRANSITION_HPP
#include "simgrid/forward.h" // aid_t
+#include "xbt/ex.h"
#include "xbt/utility.hpp" // XBT_DECLARE_ENUM_CLASS
#include <sstream>
* calls.
*/
class Transition {
- /* Textual representation of the transition, to display backtraces */
+ /* Global statistics */
static unsigned long executed_transitions_;
static unsigned long replayed_transitions_;
virtual bool depends(const Transition* other) const { return true; }
+ /**
+ The reversible race detector should only be used if we already have the assumption
+ this <* other (see Source set: a foundation for ODPOR). In particular this means that :
+ - this -->_E other
+ - proc(this) != proc(other)
+ - there is no event e s.t. this --> e --> other
+
+ @note: It is safe to assume that there is indeed a race between the two events in the execution;
+ indeed, the question the method answers is only sensible in the context of a race
+ */
+ virtual bool reversible_race(const Transition* other) const
+ {
+ xbt_die("%s unimplemented for %s", __func__, to_c_str(type_));
+ }
+
/* Returns the total amount of transitions executed so far (for statistics) */
static unsigned long get_executed_transitions() { return executed_transitions_; }
/* Returns the total amount of transitions replayed so far while backtracing (for statistics) */