From b7c0293598d45f052a41c3ed6580d98801280cd7 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 7 Mar 2016 12:29:50 +0200 Subject: Implement compiler guessing, including icc and msvc --- build2/utility.ixx | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'build2/utility.ixx') 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 inline void append_options (cstrings& args, T& s, const char* var) -- cgit v1.1