aboutsummaryrefslogtreecommitdiff
path: root/build2/functions-name.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/functions-name.cxx')
-rw-r--r--build2/functions-name.cxx109
1 files changed, 0 insertions, 109 deletions
diff --git a/build2/functions-name.cxx b/build2/functions-name.cxx
deleted file mode 100644
index ba1af5b..0000000
--- a/build2/functions-name.cxx
+++ /dev/null
@@ -1,109 +0,0 @@
-// file : build2/functions-name.cxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#include <build2/scope.hxx>
-#include <build2/function.hxx>
-#include <build2/variable.hxx>
-
-using namespace std;
-
-namespace build2
-{
- // Convert name to target'ish name (see below for the 'ish part). Return
- // raw/unprocessed data in case this is an unknown target type (or called
- // out of scope). See scope::find_target_type() for details.
- //
- static pair<name, optional<string>>
- to_target (const scope* s, name&& n)
- {
- optional<string> e;
-
- if (s != nullptr)
- {
- auto rp (s->find_target_type (n, location ()));
-
- if (rp.first != nullptr)
- n.type = rp.first->name;
-
- e = move (rp.second);
- }
-
- return make_pair (move (n), move (e));
- }
-
- void
- name_functions ()
- {
- function_family f ("name");
-
- // These functions treat a name as a target/prerequisite name.
- //
- // While on one hand it feels like calling them target.name(), etc., would
- // have been more appropriate, on the other hand they can also be called
- // on prerequisite names. They also won't always return the same result as
- // if we were interrogating an actual target (e.g., the directory may be
- // relative).
- //
- f["name"] = [](const scope* s, name n)
- {
- return to_target (s, move (n)).first.value;
- };
- f["name"] = [](const scope* s, names ns)
- {
- return to_target (s, convert<name> (move (ns))).first.value;
- };
-
- // Note: returns NULL if extension is unspecified (default) and empty if
- // specified as no extension.
- //
- f["extension"] = [](const scope* s, name n)
- {
- return to_target (s, move (n)).second;
- };
- f["extension"] = [](const scope* s, names ns)
- {
- return to_target (s, convert<name> (move (ns))).second;
- };
-
- f["directory"] = [](const scope* s, name n)
- {
- return to_target (s, move (n)).first.dir;
- };
- f["directory"] = [](const scope* s, names ns)
- {
- return to_target (s, convert<name> (move (ns))).first.dir;
- };
-
- f["target_type"] = [](const scope* s, name n)
- {
- return to_target (s, move (n)).first.type;
- };
- f["target_type"] = [](const scope* s, names ns)
- {
- return to_target (s, convert<name> (move (ns))).first.type;
- };
-
- // Note: returns NULL if no project specified.
- //
- f["project"] = [](const scope* s, name n)
- {
- return to_target (s, move (n)).first.proj;
- };
- f["project"] = [](const scope* s, names ns)
- {
- return to_target (s, convert<name> (move (ns))).first.proj;
- };
-
- // Name-specific overloads from builtins.
- //
- function_family b ("builtin");
-
- b[".concat"] = [](dir_path d, name n)
- {
- d /= n.dir;
- n.dir = move (d);
- return n;
- };
- }
-}