Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add tree pruning/subtree methods to State
[simgrid.git] / src / mc / explo / odpor / WakeupTree.cpp
index 4b0bb65..9335c69 100644 (file)
 
 namespace simgrid::mc::odpor {
 
+aid_t WakeupTreeNode::get_first_actor() const
+{
+  if (seq_.empty()) {
+    throw std::invalid_argument("Attempted to extract the first actor from "
+                                "a node in a wakeup tree representing the "
+                                "empty execution (likely the root node)");
+  }
+  return get_sequence().front()->aid_;
+}
+
 WakeupTree::WakeupTree() : WakeupTree(std::unique_ptr<WakeupTreeNode>(new WakeupTreeNode({}))) {}
 WakeupTree::WakeupTree(std::unique_ptr<WakeupTreeNode> root) : root_(root.get())
 {
   this->insert_node(std::move(root));
 }
 
-WakeupTree WakeupTree::new_subtree_rooted_at(WakeupTreeNode* root)
+WakeupTree WakeupTree::make_subtree_rooted_at(WakeupTreeNode* root)
 {
   if (not root->is_single_process()) {
     throw std::invalid_argument("Selecting subtrees is only defined for single-process nodes");