// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -*- Mode: C++ -*- // // Copyright (C) 2013-2020 Red Hat, Inc. /// @file #include "abg-internal.h" // ABG_BEGIN_EXPORT_DECLARATIONS #include "abg-traverse.h" ABG_END_EXPORT_DECLARATIONS // namespace abigail { namespace ir { /// Private data type of the @ref traversable_base type. struct traversable_base::priv { bool visiting_; priv(bool visiting = false) : visiting_(visiting) {} }; // end struct traversable_base::priv /// Default constructor of the @ref traversable_base type. traversable_base::traversable_base() :priv_(new priv) {} /// Destructor of the @ref traversable_base type. traversable_base::~traversable_base() {} /// This should returns false before and after the node has been /// visiting. During the visiting of the node (and of its children) /// this should return true. /// /// @return true if the current node is being visited. bool traversable_base::visiting() const {return priv_->visiting_;} /// The traversing code should be responsible of calling this, not /// the user code. /// /// This is the setter of the "visiting" flag of the node being /// visited. If set to yes, it means the node is being visited. /// False means either the node has not yet been visited, or it /// has already been visited. /// /// @param f the new value of the "visiting" flag. void traversable_base::visiting(bool f) {priv_->visiting_ = f;} }// end namaspace ir }// end namespace abigail