diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-03-28 09:14:31 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-03-28 16:03:35 +0200 |
commit | 3ce44330cca9dbc4314feebb27403ebc3175b6c2 (patch) | |
tree | 8c1f27442f3b2dafaec3ba50baaca3d5fd63dca7 /build2/name.ixx | |
parent | 9d0d078ff297138622cd2f3f1076f5984395e42b (diff) |
New variable architecture
Diffstat (limited to 'build2/name.ixx')
-rw-r--r-- | build2/name.ixx | 42 |
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; + } +} |