aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/utility.ixx
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild2/utility.ixx')
-rw-r--r--libbuild2/utility.ixx24
1 files changed, 24 insertions, 0 deletions
diff --git a/libbuild2/utility.ixx b/libbuild2/utility.ixx
index da9f58b..dc8b42a 100644
--- a/libbuild2/utility.ixx
+++ b/libbuild2/utility.ixx
@@ -139,6 +139,17 @@ namespace build2
return find_option (o, s[var], ic);
}
+ template <typename I>
+ I
+ find_option (const char* o, I b, I e, bool ic)
+ {
+ for (; b != e; ++b)
+ if ((ic ? icasecmp (*b, o) : strcmp (*b, o)) == 0)
+ return b;
+
+ return e;
+ }
+
template <typename T>
inline bool
find_options (const initializer_list<const char*>& os,
@@ -173,6 +184,19 @@ namespace build2
return find_option_prefix (p, s[var], ic);
}
+ template <typename I>
+ I
+ find_option_prefix (const char* p, I rb, I re, bool ic)
+ {
+ size_t n (strlen (p));
+
+ for (; rb != re; ++rb)
+ if ((ic ? icasecmp (*rb, p, n) : strncmp (*rb, p, n)) == 0)
+ return rb;
+
+ return re;
+ }
+
template <typename T>
inline const string*
find_option_prefixes (const initializer_list<const char*>& ps,