diff options
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; + } +} |