diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-02-01 16:36:24 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-02-13 12:42:41 +0200 |
commit | e3e597180487328a54721e2afb95e33ed853d586 (patch) | |
tree | 89d59f482d41eb37a90f97b0dd55c2e878e4800b /build2/scope.ixx | |
parent | 1dd17210b76d544a04fc6b4f3c98162ae9718102 (diff) |
Pass const scope& where modification should not happen
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; + } +} |