diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2022-06-06 11:40:50 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2022-06-09 12:32:36 +0200 |
commit | f0f5af955fe03fa120b69c39f4a23ff3a177769b (patch) | |
tree | 29b614333ec7c32d13290a992a30fe07e948f464 /bpkg/package-configuration.hxx | |
parent | b07c40f8a457bbb8f7f2d4d142e5e5e974465e25 (diff) |
Implementation of evaluate_require() plus other tweaks
Diffstat (limited to 'bpkg/package-configuration.hxx')
-rw-r--r-- | bpkg/package-configuration.hxx | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/bpkg/package-configuration.hxx b/bpkg/package-configuration.hxx index 55a43a5..ba7240e 100644 --- a/bpkg/package-configuration.hxx +++ b/bpkg/package-configuration.hxx @@ -55,6 +55,11 @@ namespace bpkg class package_configuration: public vector<config_variable_value> { public: + package_key package; + + explicit + package_configuration (package_key p): package (move (p)) {} + config_variable_value* find (const string& name) { @@ -78,10 +83,24 @@ namespace bpkg } }; + class package_configurations: public small_vector<package_configuration, 1> + { + public: + package_configuration& + operator[] (const package_key& p) + { + auto i (find_if (begin (), end (), + [&p] (const package_configuration& pc) + { + return pc.package == p; + })); + if (i != end ()) + return *i; - // @@ Maybe redo as small_vector? - // - using package_configurations = map<package_key, package_configuration>; + push_back (package_configuration (p)); + return back (); + } + }; // A subset of config_variable_value for variable values set by the |