aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/target.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2024-02-12 05:52:10 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2024-02-12 05:52:10 +0200
commitd298d5cb1379d719dd96d5374b388889467269ee (patch)
tree2704939e9b47039203fe0b8ee5b9e4a619463de8 /libbuild2/target.hxx
parentba8e7dccf1257fbec9c7a2eac8729fcec684a9ea (diff)
Extend class target, prerequisite_target interfaces
Diffstat (limited to 'libbuild2/target.hxx')
-rw-r--r--libbuild2/target.hxx36
1 files changed, 34 insertions, 2 deletions
diff --git a/libbuild2/target.hxx b/libbuild2/target.hxx
index e3152ac..41bf095 100644
--- a/libbuild2/target.hxx
+++ b/libbuild2/target.hxx
@@ -89,9 +89,15 @@ namespace build2
prerequisite_target (const target_type* t, bool a = false, uintptr_t d = 0)
: target (t), include (a ? include_adhoc : 0), data (d) {}
+ prerequisite_target (const target_type& t, bool a = false, uintptr_t d = 0)
+ : prerequisite_target (&t, a, d) {}
+
prerequisite_target (const target_type* t, include_type a, uintptr_t d = 0)
: prerequisite_target (t, a == include_type::adhoc, d) {}
+ prerequisite_target (const target_type& t, include_type a, uintptr_t d = 0)
+ : prerequisite_target (&t, a, d) {}
+
const target_type* target;
operator const target_type*& () {return target;}
@@ -799,15 +805,41 @@ namespace build2
value&
assign (const variable* var) {return vars.assign (var);} // For cached.
+ // Note: variable must already be entered.
+ //
+ value&
+ assign (const string& name)
+ {
+ return vars.assign (base_scope ().var_pool ().find (name));
+ }
+
// Return a value suitable for appending. See scope for details.
//
value&
- append (const variable&);
+ append (const variable&, const scope* bs = nullptr);
+
+ // Note: variable must already be entered.
+ //
+ value&
+ append (const string& name)
+ {
+ const scope& bs (base_scope ());
+ return append (*bs.var_pool ().find (name), &bs);
+ }
// As above but assume the targets mutex is locked.
//
value&
- append_locked (const variable&);
+ append_locked (const variable&, const scope* bs = nullptr);
+
+ // Note: variable must already be entered.
+ //
+ value&
+ append_locked (const string& name)
+ {
+ const scope& bs (base_scope ());
+ return append_locked (*bs.var_pool ().find (name), &bs);
+ }
// Rule hints.
//