From 197ac5950ea129b7b0dba4fd460b3b630d490fe1 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 27 Apr 2020 09:35:53 +0200 Subject: Add support for untyped assignment to value --- libbuild2/variable.hxx | 4 +++- libbuild2/variable.ixx | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) 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 value& operator= (T); template value& operator+= (T); + value& operator= (names); + value& operator+= (names); + template 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) { -- cgit v1.1