diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2022-10-10 18:22:31 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2022-10-10 18:22:31 +0200 |
commit | 19af3f6b0873a92582e4787a87a6f14df53ff6ae (patch) | |
tree | 7545e80d9348eb7808e1c894cd111ab46cc8a9a5 /libbuild2/scope.hxx | |
parent | 9f95a23eae04680559a9cb943fdfaa00f52cd66e (diff) |
Preparatory work for public/private variable distinction
We still always use the public var_pool from context but where required,
all access now goes through scope::var_pool().
Diffstat (limited to 'libbuild2/scope.hxx')
-rw-r--r-- | libbuild2/scope.hxx | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libbuild2/scope.hxx b/libbuild2/scope.hxx index 2105512..598d7e8 100644 --- a/libbuild2/scope.hxx +++ b/libbuild2/scope.hxx @@ -136,7 +136,7 @@ namespace build2 lookup_type operator[] (const string& name) const { - const variable* var (ctx.var_pool.find (name)); + const variable* var (var_pool ().find (name)); return var != nullptr ? operator[] (*var) : lookup_type (); } @@ -508,6 +508,10 @@ namespace build2 const path& src_root_file; // build[2]/bootstrap/src-root.build[2] const path& out_root_file; // build[2]/bootstrap/src-root.build[2] + // Project-private variable pool. + // + variable_pool var_pool; + // Meta/operations supported by this project. // build2::meta_operations meta_operations; @@ -589,12 +593,21 @@ namespace build2 return const_cast<scope&> (*this); } + // @@ TODO: find root scope and return its var_pool falling back to + // ctx.var_pool if no root scope. + // variable_pool& var_pool () { return ctx.var_pool.rw (*this); } + const variable_pool& + var_pool () const + { + return ctx.var_pool; + } + private: friend class parser; friend class scope_map; |