diff options
Diffstat (limited to 'build2/scope.ixx')
-rw-r--r-- | build2/scope.ixx | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/build2/scope.ixx b/build2/scope.ixx new file mode 100644 index 0000000..46eea3d --- /dev/null +++ b/build2/scope.ixx @@ -0,0 +1,42 @@ +// file : build2/scope.ixx -*- C++ -*- +// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +namespace build2 +{ + // scope + // + inline scope* scope:: + strong_scope () + { + return root_ != nullptr + ? root_->strong_ != nullptr ? root_->strong_ : root_ + : nullptr; + } + + inline const scope* scope:: + strong_scope () const + { + return root_ != nullptr + ? root_->strong_ != nullptr ? root_->strong_ : root_ + : nullptr; + } + + inline scope* scope:: + weak_scope () + { + scope* r (root_); + if (r != nullptr) + for (; r->parent_->root_ != nullptr; r = r->parent_->root_) ; + return r; + } + + inline const scope* scope:: + weak_scope () const + { + const scope* r (root_); + if (r != nullptr) + for (; r->parent_->root_ != nullptr; r = r->parent_->root_) ; + return r; + } +} |