From 3ce44330cca9dbc4314feebb27403ebc3175b6c2 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 28 Mar 2016 09:14:31 +0200 Subject: New variable architecture --- build2/name.ixx | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 build2/name.ixx (limited to 'build2/name.ixx') 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; + } +} -- cgit v1.1