From 65be7de7aca4bdac05e0acf68ec86a351e779839 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 18 Mar 2020 07:19:41 +0200 Subject: Add $visibility() function for querying variable visibility --- libbuild2/functions-builtin.cxx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libbuild2/functions-builtin.cxx') diff --git a/libbuild2/functions-builtin.cxx b/libbuild2/functions-builtin.cxx index c4f0314..4e28741 100644 --- a/libbuild2/functions-builtin.cxx +++ b/libbuild2/functions-builtin.cxx @@ -27,6 +27,21 @@ namespace build2 return (*s)[convert (move (name))].defined (); }; + // Return variable visibility if it exists and NULL otherwise. + // + f["visibility"] = [](const scope* s, names name) + { + if (s == nullptr) + fail << "visibility() called out of scope" << endf; + + const variable* var ( + s->ctx.var_pool.find (convert (move (name)))); + + return (var != nullptr + ? optional (to_string (var->visibility)) + : nullopt); + }; + f["type"] = [](value* v) {return v->type != nullptr ? v->type->name : "";}; f["null"] = [](value* v) {return v->null;}; f["empty"] = [](value* v) {return v->null || v->empty ();}; -- cgit v1.1