72 lower_layer.node_->set_parent(
node_);
82 return node_->is_ancestor_node_iterative();
99 void set_parent(
const std::shared_ptr<node>& parent)
noexcept {
110 const auto locked =
parent_.lock();
114 return locked->is_this_or_ancestor_node_iterative();
149 std::shared_ptr<node>
node_{std::make_shared<node>()};
void set_parent(const std::shared_ptr< node > &parent) noexcept
Set the parent node.
auto is_ancestor_node_iterative() const noexcept -> bool
Check whether one of ancestor nodes is iterative.
std::atomic< bool > is_iterative_
Whether this layer is iterative.
void reset() noexcept
Reset the internal state.
auto is_this_or_ancestor_node_iterative() const noexcept -> bool
Check whether this node or one of ancestor nodes is iterative.
std::weak_ptr< node > parent_
Parent node.
void set_iterative() noexcept
Set this node to an iterative algorithm.
Class to handle layers of iterations.
std::shared_ptr< node > node_
This node.
void set_iterative() const noexcept
Set this node to an iterative algorithm.
void initialize_lower_layer(iteration_layer_handler &lower_layer) noexcept
Initialize the lower layer.
iteration_layer_handler(iteration_layer_handler &&) noexcept=default
Move constructor.
auto is_upper_layer_iterative() const noexcept -> bool
Check whether one of upper layers is iterative.
iteration_layer_handler()=default
Constructor.
Namespace of internal implementations.