// Find an enabled transition to pick
for (const auto& [_, actor] : get_actors_list()) {
if (actor.is_enabled()) {
- // For each variant of the transition, we want
- // to insert the action into the tree. This ensures
- // that all variants are searched
+ // For each variant of the transition that is enabled, we want to insert the action into the tree.
+ // This ensures that all variants are searched
for (unsigned times = 0; times < actor.get_max_considered(); ++times) {
wakeup_tree_.insert(prior, odpor::PartialExecution{actor.get_transition(times)});
}
void State::sprout_tree_from_parent_state()
{
- XBT_DEBUG("Initializing Wut with parent one:");
- XBT_DEBUG("\n%s", parent_state_->wakeup_tree_.string_of_whole_tree().c_str());
+ XBT_DEBUG("Initializing Wut with parent one:");
+ XBT_DEBUG("\n%s", parent_state_->wakeup_tree_.string_of_whole_tree().c_str());
-
xbt_assert(parent_state_ != nullptr, "Attempting to construct a wakeup tree for the root state "
"(or what appears to be, rather for state without a parent defined)");
const auto min_process_node = parent_state_->wakeup_tree_.get_min_single_process_node();
"to schedule from the wakeup tree? Trace so far:",
get_transition_in()->to_string(false).c_str(), get_transition_in()->aid_,
min_process_node.value()->get_action()->to_string(false).c_str(), min_process_node.value()->get_actor());
- for (auto elm : Exploration::get_instance()->get_textual_trace())
+ for (auto const& elm : Exploration::get_instance()->get_textual_trace())
XBT_ERROR("%s", elm.c_str());
xbt_abort();
}
wakeup_tree_.remove_min_single_process_subtree();
}
+void State::remove_subtree_at_aid(const aid_t proc)
+{
+ wakeup_tree_.remove_subtree_at_aid(proc);
+}
+
odpor::WakeupTree::InsertionResult State::insert_into_wakeup_tree(const odpor::PartialExecution& pe,
const odpor::Execution& E)
{