aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/name.ixx
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild2/name.ixx')
-rw-r--r--libbuild2/name.ixx40
1 files changed, 40 insertions, 0 deletions
diff --git a/libbuild2/name.ixx b/libbuild2/name.ixx
new file mode 100644
index 0000000..188126e
--- /dev/null
+++ b/libbuild2/name.ixx
@@ -0,0 +1,40 @@
+// file : libbuild2/name.ixx -*- C++ -*-
+// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+namespace build2
+{
+ inline int name::
+ compare (const name& x) const
+ {
+ int r (proj < x.proj ? -1 : (proj > x.proj ? 1 : 0));
+
+ if (r == 0)
+ r = dir.compare (x.dir);
+
+ if (r == 0)
+ r = type.compare (x.type);
+
+ if (r == 0)
+ r = value.compare (x.value);
+
+ if (r == 0)
+ r = pair < x.pair ? -1 : (pair > x.pair ? 1 : 0);
+
+ return r;
+ }
+
+ inline name
+ to_name (string s)
+ {
+ if (!s.empty () && path::traits_type::is_separator (s.back ()))
+ {
+ dir_path d (move (s), dir_path::exact);
+
+ if (!d.empty ())
+ return name (move (d));
+ }
+
+ return name (move (s));
+ }
+}