X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f0534a5e2af72c36c12d55f7ea323040e6e9bf36..bc2253e2c879ee28ae5153f1d56497ab802aeea9:/src/mc/explo/odpor/WakeupTree.hpp diff --git a/src/mc/explo/odpor/WakeupTree.hpp b/src/mc/explo/odpor/WakeupTree.hpp index 59b96c3f31..def2840e0f 100644 --- a/src/mc/explo/odpor/WakeupTree.hpp +++ b/src/mc/explo/odpor/WakeupTree.hpp @@ -35,8 +35,6 @@ namespace simgrid::mc::odpor { */ class WakeupTreeNode { private: - explicit WakeupTreeNode(std::shared_ptr u) : action_(u) {} - WakeupTreeNode* parent_ = nullptr; /** An ordered list of children of for this node in the tree */ @@ -53,6 +51,9 @@ private: friend WakeupTreeIterator; public: + explicit WakeupTreeNode(std::shared_ptr u) : action_(u) {} + + WakeupTreeNode() = default; ~WakeupTreeNode() = default; WakeupTreeNode(const WakeupTreeNode&) = delete; WakeupTreeNode(WakeupTreeNode&&) = default; @@ -71,6 +72,8 @@ public: std::shared_ptr get_action() const { return action_; } const std::list& get_ordered_children() const { return children_; } + std::string string_of_whole_tree(int indentation_level) const; + /** Insert a node `node` as a new child of this node */ void add_child(WakeupTreeNode* node); }; @@ -115,7 +118,7 @@ private: void insert_node(std::unique_ptr node); void insert_sequence_after(WakeupTreeNode* node, const PartialExecution& w); void remove_node(WakeupTreeNode* node); - bool contains(WakeupTreeNode* node) const; + bool contains(const WakeupTreeNode* node) const; /** * @brief Removes the node `root` and all of its descendants from @@ -151,6 +154,8 @@ public: std::vector get_single_process_texts() const; + std::string string_of_whole_tree() const; + /** * @brief Remove the subtree of the smallest (with respect * to the tree's "<" relation) single-process node. @@ -164,6 +169,8 @@ public: */ void remove_min_single_process_subtree(); + void remove_subtree_at_aid(aid_t proc); + /** * @brief Whether or not this tree is considered empty *