aboutsummaryrefslogtreecommitdiff
path: root/bpkg/package-configuration.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'bpkg/package-configuration.hxx')
-rw-r--r--bpkg/package-configuration.hxx25
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