summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/til.c21
-rw-r--r--src/til.h1
2 files changed, 22 insertions, 0 deletions
diff --git a/src/til.c b/src/til.c
index 8fa3b48..2ebc0a8 100644
--- a/src/til.c
+++ b/src/til.c
@@ -669,3 +669,24 @@ int til_fragmenter_tile64(til_module_context_t *context, const til_fb_fragment_t
{
return til_fb_fragment_tile_single(fragment, 64, number, res_fragment);
}
+
+
+/* Helper for mapping a value to a position in the supplied NULL-terminated lsit of options.
+ * Primarily useful for modules when mapping a settings value to an entry in a values array.
+ * Returns 0 on success w/position @res_pos, -ENOENT when not found.
+ */
+int til_value_to_pos(const char **options, const char *value, unsigned *res_pos)
+{
+ assert(options);
+ assert(value);
+ assert(res_pos);
+
+ for (unsigned i = 0; options[i]; i++) {
+ if (!strcasecmp(value, options[i])) {
+ *res_pos = i;
+ return 0;
+ }
+ }
+
+ return -ENOENT;
+}
diff --git a/src/til.h b/src/til.h
index 9fb8b5b..9049a0b 100644
--- a/src/til.h
+++ b/src/til.h
@@ -58,5 +58,6 @@ int til_fragmenter_noop_per_cpu(til_module_context_t *context, const til_fb_frag
int til_fragmenter_slice_per_cpu(til_module_context_t *context, const til_fb_fragment_t *fragment, unsigned number, til_fb_fragment_t *res_fragment);
int til_fragmenter_slice_per_cpu_x16(til_module_context_t *context, const til_fb_fragment_t *fragment, unsigned number, til_fb_fragment_t *res_fragment);
int til_fragmenter_tile64(til_module_context_t *context, const til_fb_fragment_t *fragment, unsigned number, til_fb_fragment_t *res_fragment);
+int til_value_to_pos(const char **options, const char *value, unsigned *res_pos);
#endif
© All Rights Reserved