diff options
Diffstat (limited to 'libbuild2/functions-target-triplet.cxx')
-rw-r--r-- | libbuild2/functions-target-triplet.cxx | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/libbuild2/functions-target-triplet.cxx b/libbuild2/functions-target-triplet.cxx index ff9a15d..6e12c97 100644 --- a/libbuild2/functions-target-triplet.cxx +++ b/libbuild2/functions-target-triplet.cxx @@ -13,22 +13,48 @@ namespace build2 { function_family f (m, "target_triplet"); - f["string"] = [](target_triplet t) {return t.string ();}; - f["representation"] = [](target_triplet t) {return t.representation ();}; + // $string(<target-triplet>) + // + // Return the canonical (that is, without the `unknown` vendor component) + // target triplet string. + // + + // Note that we must handle NULL values (relied upon by the parser + // to provide conversion semantics consistent with untyped values). + // + f["string"] += [](target_triplet* t) + { + return t != nullptr ? t->string () : string (); + }; + + // $representation(<target-triplet>) + // + // Return the complete target triplet string that always contains the + // vendor component. + // + f["representation"] += [](target_triplet t) + { + return t.representation (); + }; // Target triplet-specific overloads from builtins. // function_family b (m, "builtin"); - b[".concat"] = [](target_triplet l, string sr) {return l.string () + sr;}; - b[".concat"] = [](string sl, target_triplet r) {return sl + r.string ();}; + // Note that while we should normally handle NULL values (relied upon by + // the parser to provide concatenation semantics consistent with untyped + // values), the result will unlikely be what the user expected. So for now + // we keep it a bit tighter. + // + b[".concat"] += [](target_triplet l, string sr) {return l.string () + sr;}; + b[".concat"] += [](string sl, target_triplet r) {return sl + r.string ();}; - b[".concat"] = [](target_triplet l, names ur) + b[".concat"] += [](target_triplet l, names ur) { return l.string () + convert<string> (move (ur)); }; - b[".concat"] = [](names ul, target_triplet r) + b[".concat"] += [](names ul, target_triplet r) { return convert<string> (move (ul)) + r.string (); }; |