aboutsummaryrefslogtreecommitdiff
path: root/build/variable
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-06-18 12:25:02 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-06-18 12:25:02 +0200
commit4cda4b89c16932f02e04c5019a71b659ccf821e6 (patch)
tree8fbaddb1c64a53c9c871c1a96a99ec64490d222a /build/variable
parent5cb5b09b198932a0d3bd985fd52fd9fbcb1c2af5 (diff)
Move prefix-map from build2 to libbutl
Diffstat (limited to 'build/variable')
-rw-r--r--build/variable47
1 files changed, 25 insertions, 22 deletions
diff --git a/build/variable b/build/variable
index 0cd411d..42f0787 100644
--- a/build/variable
+++ b/build/variable
@@ -14,9 +14,10 @@
#include <typeindex>
#include <unordered_set>
+#include <butl/prefix-map>
+
#include <build/path>
#include <build/name>
-#include <build/prefix-map>
namespace build
{
@@ -207,24 +208,10 @@ namespace std
};
}
-namespace build
+namespace butl
{
- // variable_pool
- //
- struct variable_set: std::unordered_set<variable>
- {
- // @@ Need to check/set type?
- //
- const variable&
- find (std::string name) {return *emplace (std::move (name)).first;}
- };
-
- extern variable_set variable_pool;
-
- // variable_map
- //
template <>
- struct compare_prefix<variable_cref>: compare_prefix<std::string>
+ struct compare_prefix<build::variable_cref>: compare_prefix<std::string>
{
typedef compare_prefix<std::string> base;
@@ -232,22 +219,38 @@ namespace build
compare_prefix (char d): base (d) {}
bool
- operator() (const variable& x, const variable& y) const
+ operator() (const build::variable& x, const build::variable& y) const
{
return base::operator() (x.name, y.name);
}
bool
- prefix (const variable& p, const variable& k) const
+ prefix (const build::variable& p, const build::variable& k) const
{
return base::prefix (p.name, k.name);
}
};
+}
- struct variable_map: prefix_map<variable_cref, value_ptr, '.'>
+namespace build
+{
+ // variable_pool
+ //
+ struct variable_set: std::unordered_set<variable>
{
- typedef prefix_map<variable_cref, value_ptr, '.'> base;
+ // @@ Need to check/set type?
+ //
+ const variable&
+ find (std::string name) {return *emplace (std::move (name)).first;}
+ };
+
+ extern variable_set variable_pool;
+ // variable_map
+ //
+ using variable_map_base = butl::prefix_map<variable_cref, value_ptr, '.'>;
+ struct variable_map: variable_map_base
+ {
value_proxy
operator[] (const variable& var) const
{
@@ -268,7 +271,7 @@ namespace build
value_proxy
assign (const variable& var)
{
- return value_proxy (&base::operator[] (var), this);
+ return value_proxy (&variable_map_base::operator[] (var), this);
}
value_proxy