aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2020-04-27 09:35:53 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2020-04-27 09:35:53 +0200
commit197ac5950ea129b7b0dba4fd460b3b630d490fe1 (patch)
tree76b5656c2fd010ef909169a49f3e28e3475158dc
parent64eb9a61dd9bdac1006821af187f48df19b64792 (diff)
Add support for untyped assignment to value
-rw-r--r--libbuild2/variable.hxx4
-rw-r--r--libbuild2/variable.ixx16
2 files changed, 19 insertions, 1 deletions
diff --git a/libbuild2/variable.hxx b/libbuild2/variable.hxx
index 0eaf170..93f684b 100644
--- a/libbuild2/variable.hxx
+++ b/libbuild2/variable.hxx
@@ -344,6 +344,9 @@ namespace build2
template <typename T> value& operator= (T);
template <typename T> value& operator+= (T);
+ value& operator= (names);
+ value& operator+= (names);
+
template <typename T> value& operator= (T* v) {
return v != nullptr ? *this = *v : *this = nullptr;}
@@ -361,7 +364,6 @@ namespace build2
void append (names&&, const variable*);
void prepend (names&&, const variable*);
-
// Implementation details, don't use directly except in representation
// type implementations.
//
diff --git a/libbuild2/variable.ixx b/libbuild2/variable.ixx
index 4688d27..50cce78 100644
--- a/libbuild2/variable.ixx
+++ b/libbuild2/variable.ixx
@@ -101,6 +101,22 @@ namespace build2
return *this;
}
+ inline value& value::
+ operator= (names v)
+ {
+ assert (type == nullptr);
+ assign (move (v), nullptr);
+ return *this;
+ }
+
+ inline value& value::
+ operator+= (names v)
+ {
+ assert (type == nullptr);
+ append (move (v), nullptr);
+ return *this;
+ }
+
inline void value::
assign (name&& n, const variable* var)
{