diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2022-06-17 08:44:58 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2022-06-17 08:44:58 +0200 |
commit | 7923f9611e728926933e4b8a8e9f530966f0fc0c (patch) | |
tree | 1be5d2ffcefa3ade5265b748cb1e524dbfe70535 /bpkg/package-skeleton.hxx | |
parent | 7fa50267d55250c7418e7cc95422270e8a3fcff6 (diff) |
Re-implement evaluate_reflect() to use same mechanisms as other evaluate_*()
Diffstat (limited to 'bpkg/package-skeleton.hxx')
-rw-r--r-- | bpkg/package-skeleton.hxx | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/bpkg/package-skeleton.hxx b/bpkg/package-skeleton.hxx index 1e274c0..7224d1d 100644 --- a/bpkg/package-skeleton.hxx +++ b/bpkg/package-skeleton.hxx @@ -266,6 +266,9 @@ namespace bpkg strings cmd_vars_; bool cmd_vars_cache_ = false; + strings dependent_vars_; // Dependent variable overrides. + vector<package_key> dependent_orgs_; // Dependent originators (parallel). + // Reflect variable value storage. Used for both real reflect and // dependency reflect. // @@ -277,13 +280,22 @@ namespace bpkg optional<build2::names> value; }; - using reflect_variable_values = vector<reflect_variable_value>; - - strings dependent_vars_; // Dependent variable overrides. - vector<package_key> dependent_orgs_; // Dependent originators (parallel). + class reflect_variable_values: public vector<reflect_variable_value> + { + public: + const reflect_variable_value* + find (const string& name) + { + auto i (find_if (begin (), end (), + [&name] (const reflect_variable_value& v) + { + return v.name == name; + })); + return i != end () ? &*i : nullptr; + } + }; - strings reflect_vars_; // Reflect variable overrides. - string reflect_frag_; // Reflect variables fragment. + reflect_variable_values reflect_; // Reflect variables. // Dependency configuration variables set by the prefer/require clauses // and that should be reflected in subsequent clauses. |