diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2024-02-12 05:52:10 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2024-02-12 05:52:10 +0200 |
commit | d298d5cb1379d719dd96d5374b388889467269ee (patch) | |
tree | 2704939e9b47039203fe0b8ee5b9e4a619463de8 /libbuild2/target.hxx | |
parent | ba8e7dccf1257fbec9c7a2eac8729fcec684a9ea (diff) |
Extend class target, prerequisite_target interfaces
Diffstat (limited to 'libbuild2/target.hxx')
-rw-r--r-- | libbuild2/target.hxx | 36 |
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. // |