aboutsummaryrefslogtreecommitdiff
path: root/build2/name.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-03-28 09:14:31 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-03-28 16:03:35 +0200
commit3ce44330cca9dbc4314feebb27403ebc3175b6c2 (patch)
tree8c1f27442f3b2dafaec3ba50baaca3d5fd63dca7 /build2/name.ixx
parent9d0d078ff297138622cd2f3f1076f5984395e42b (diff)
New variable architecture
Diffstat (limited to 'build2/name.ixx')
-rw-r--r--build2/name.ixx42
1 files changed, 42 insertions, 0 deletions
diff --git a/build2/name.ixx b/build2/name.ixx
new file mode 100644
index 0000000..21bd125
--- /dev/null
+++ b/build2/name.ixx
@@ -0,0 +1,42 @@
+// file : build2/name.ixx -*- C++ -*-
+// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+namespace build2
+{
+ inline int name::
+ compare (const name& x) const
+ {
+ int r;
+
+ // Project string is pooled, so for equality can just compare pointers.
+ //
+ r = proj == x.proj
+ ? 0
+ : proj == nullptr || (x.proj != nullptr && *proj < *x.proj) ? -1 : 1;
+
+ 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 void name::
+ clear ()
+ {
+ proj = nullptr;
+ dir.clear ();
+ type.clear ();
+ value.clear ();
+ pair = false;
+ }
+}