aboutsummaryrefslogtreecommitdiff
path: root/libbuild2
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2022-06-06 11:30:04 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2022-06-06 11:30:04 +0200
commit38db461e03e949916221f7ae99b06751a3d05cce (patch)
tree94974621ad13ac162100cbb7872c4d89411f6e9d /libbuild2
parentef130e855b5ac0f4acbb8b5b6fcd14069df8afe5 (diff)
Add another config::origin() overload
Diffstat (limited to 'libbuild2')
-rw-r--r--libbuild2/config/utility.cxx9
-rw-r--r--libbuild2/config/utility.hxx8
2 files changed, 15 insertions, 2 deletions
diff --git a/libbuild2/config/utility.cxx b/libbuild2/config/utility.cxx
index 243c03a..a64d4d5 100644
--- a/libbuild2/config/utility.cxx
+++ b/libbuild2/config/utility.cxx
@@ -177,14 +177,19 @@ namespace build2
origin (const scope& rs, const variable& var)
{
// Make sure this is a config.* variable. This could matter since we
- // reply on the semantics of value::extra. We could also detect
+ // rely on the semantics of value::extra. We could also detect
// special variables like config.booted, some config.config.*, etc.,
// (see config_save() for details) but that seems harmless.
//
if (var.name.compare (0, 7, "config.") != 0)
throw invalid_argument ("config.* variable expected");
- pair<lookup, size_t> org (rs.lookup_original (var));
+ return origin (rs, var, rs.lookup_original (var));
+ }
+
+ pair<variable_origin, lookup>
+ origin (const scope& rs, const variable& var, pair<lookup, size_t> org)
+ {
pair<lookup, size_t> ovr (var.overrides == nullptr
? org
: rs.lookup_override (var, org));
diff --git a/libbuild2/config/utility.hxx b/libbuild2/config/utility.hxx
index b998e3c..1e33568 100644
--- a/libbuild2/config/utility.hxx
+++ b/libbuild2/config/utility.hxx
@@ -514,6 +514,14 @@ namespace build2
LIBBUILD2_SYMEXPORT pair<variable_origin, lookup>
origin (const scope& rs, const variable&);
+
+ // As above but using the result of scope::lookup_original() or
+ // semantically equivalent (e.g., lookup_namespace()).
+ //
+ // Note that this version does not check that the variable is config.*.
+ //
+ LIBBUILD2_SYMEXPORT pair<variable_origin, lookup>
+ origin (const scope& rs, const variable&, pair<lookup, size_t> original);
}
}