From 897a0e4fdf9ca90ee8d236a38e138a8ae6bc3627 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 6 Mar 2015 09:15:40 +0200 Subject: Add support for lexing and parsing name pairs We will need it for the buildspec and also if/when we support map variable types. --- build/name.cxx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'build/name.cxx') diff --git a/build/name.cxx b/build/name.cxx index 6280676..46e2440 100644 --- a/build/name.cxx +++ b/build/name.cxx @@ -17,6 +17,7 @@ namespace build { bool ht (!n.type.empty ()); bool hv (!n.value.empty ()); + bool hd (false); if (ht) os << n.type << '{'; @@ -37,6 +38,8 @@ namespace build // if (s.back () != path::traits::directory_separator && (hv || !ht)) os << path::traits::directory_separator; + + hd = true; } } @@ -45,14 +48,21 @@ namespace build if (ht) os << '}'; + if (!ht && !hv && !hd) + os << "{}"; // Nothing got printed. + return os; } ostream& operator<< (ostream& os, const names& ns) { - for (auto b (ns.begin ()), i (b), e (ns.end ()); i != e; ++i) - os << (i != b ? " " : "") << *i; + for (auto i (ns.begin ()), e (ns.end ()); i != e; ) + { + const name& n (*i); + ++i; + os << n << (n.pair ? "=" : (i != e ? " " : "")); + } return os; } -- cgit v1.1