diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-07-16 10:51:35 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-07-16 10:51:35 +0200 |
commit | b439803cc5e09188c7b523333f6b71de3ba57dbf (patch) | |
tree | 0ed119a6910c441124b8c053d0df48c8f1127fad /build2/scope | |
parent | 5fac16471ba789965a72ffbbea406b75d8a680dc (diff) |
Add support for prepend/append in target type/pattern-specific vars
Semantically, these are similar to variable overrides and are essentially
treated as "templates" that are applied on lookup to the "stem" value that is
specific to the target type/name. For example:
x = [string] a
file{f*}: x =+ b
sub/:
{
file{*}: x += c
print $(file{foo}:x) # abc
print $(file{bar}:x) # ac
}
Diffstat (limited to 'build2/scope')
-rw-r--r-- | build2/scope | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/build2/scope b/build2/scope index b7c9aef..70eb73d 100644 --- a/build2/scope +++ b/build2/scope @@ -134,13 +134,15 @@ namespace build2 return var.override == nullptr ? p : find_override (var, move (p)); } - // Implementation details (used by scope target lookup). + // Implementation details (used by scope target lookup). The start_depth + // can be used to skip a number of initial lookups. // pair<lookup, size_t> find_original ( const variable&, const target_type* tt = nullptr, const string* tn = nullptr, - const target_type* gt = nullptr, const string* gn = nullptr) const; + const target_type* gt = nullptr, const string* gn = nullptr, + size_t start_depth = 1) const; pair<lookup, size_t> find_override (const variable&, |