aboutsummaryrefslogtreecommitdiff
path: root/build2/utility.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-03-07 12:29:50 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-03-07 12:29:50 +0200
commitb7c0293598d45f052a41c3ed6580d98801280cd7 (patch)
tree19f519f8ebf4e9da6db31eed54ba8e8ee778907d /build2/utility.cxx
parent6fa958ee23d0beb62f687d3d9137c774b4960197 (diff)
Implement compiler guessing, including icc and msvc
Diffstat (limited to 'build2/utility.cxx')
-rw-r--r--build2/utility.cxx37
1 files changed, 37 insertions, 0 deletions
diff --git a/build2/utility.cxx b/build2/utility.cxx
index c3dd99f..1b8be65 100644
--- a/build2/utility.cxx
+++ b/build2/utility.cxx
@@ -46,6 +46,43 @@ namespace build2
// <build2/utility>
//
+ string&
+ trim (string& l)
+ {
+ /*
+ assert (trim (r = "") == "");
+ assert (trim (r = " ") == "");
+ assert (trim (r = " \t\r") == "");
+ assert (trim (r = "a") == "a");
+ assert (trim (r = " a") == "a");
+ assert (trim (r = "a ") == "a");
+ assert (trim (r = " \ta") == "a");
+ assert (trim (r = "a \r") == "a");
+ assert (trim (r = " a ") == "a");
+ assert (trim (r = " \ta \r") == "a");
+ */
+
+ size_t i (0), n (l.size ());
+
+ for (char c;
+ i != n && ((c = l[i]) == ' ' || c == '\t' || c == '\r');
+ ++i) ;
+
+ for (char c;
+ n != i && ((c = l[n - 1]) == ' ' || c == '\t' || c == '\r');
+ --n) ;
+
+ if (i != 0)
+ {
+ string s (l, i, n - i);
+ l.swap (s);
+ }
+ else if (n != l.size ())
+ l.resize (n);
+
+ return l;
+ }
+
const string empty_string;
const path empty_path;
const dir_path empty_dir_path;