diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-03-07 12:29:50 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-03-07 12:29:50 +0200 |
commit | b7c0293598d45f052a41c3ed6580d98801280cd7 (patch) | |
tree | 19f519f8ebf4e9da6db31eed54ba8e8ee778907d /build2/utility.ixx | |
parent | 6fa958ee23d0beb62f687d3d9137c774b4960197 (diff) |
Implement compiler guessing, including icc and msvc
Diffstat (limited to 'build2/utility.ixx')
-rw-r--r-- | build2/utility.ixx | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/build2/utility.ixx b/build2/utility.ixx index 04ba9f5..596eb78 100644 --- a/build2/utility.ixx +++ b/build2/utility.ixx @@ -4,6 +4,35 @@ namespace build2 { + inline size_t + next_word (const string& s, size_t& b, size_t& e, char d1, char d2) + { + return next_word (s, s.size (), b, e, d1, d2); + } + + inline size_t + next_word (const string& s, size_t n, size_t& b, size_t& e, char d1, char d2) + { + if (b != e) + b = e; + + // Skip leading delimiters. + // + for (; b != n && (s[b] == d1 || s[b] == d2); ++b) ; + + if (b == n) + { + e = n; + return 0; + } + + // Find first trailing delimiter. + // + for (e = b + 1; e != n && s[e] != d1 && s[e] != d2; ++e) ; + + return e - b; + } + template <typename T> inline void append_options (cstrings& args, T& s, const char* var) |