UnfoldingEvent(UnfoldingEvent&&) = default;
EventSet get_history() const;
+ EventSet get_local_config() const;
bool in_history_of(const UnfoldingEvent* other) const;
+
+ /**
+ * @brief Whether or not the given event is a decendant
+ * of or an ancestor of the given event
+ */
bool related_to(const UnfoldingEvent* other) const;
+ /// @brief Whether or not this event is in conflict with
+ /// the given one (i.e. whether `this # other`)
bool conflicts_with(const UnfoldingEvent* other) const;
- bool conflicts_with(const Configuration& config) const;
+
+ /// @brief Whether or not this event is in conflict with
+ /// any event in the given set
+ bool conflicts_with_any(const EventSet& events) const;
+
+ /// @brief Computes "this #ⁱ other"
bool immediately_conflicts_with(const UnfoldingEvent* other) const;
- bool has_dependent_transition_with(const UnfoldingEvent* other) const;
+ bool is_dependent_with(const Transition*) const;
+ bool is_dependent_with(const UnfoldingEvent* other) const;
+ unsigned get_id() const { return this->id; }
+ aid_t get_actor() const { return get_transition()->aid_; }
const EventSet& get_immediate_causes() const { return this->immediate_causes; }
Transition* get_transition() const { return this->associated_transition.get(); }
+ void set_transition(std::shared_ptr<Transition> t) { this->associated_transition = std::move(t); }
+
+ std::string to_string() const;
+
bool operator==(const UnfoldingEvent&) const;
+ bool operator!=(const UnfoldingEvent& other) const { return not(*this == other); }
+private:
/**
* @brief The transition that UDPOR "attaches" to this
* specific event for later use while computing e.g. extension
* so on.
*/
EventSet immediate_causes;
+
+ /**
+ * @brief An identifier which is used to sort events
+ * deterministically
+ */
+ unsigned long id = 0;
};
} // namespace simgrid::mc::udpor