]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
ply-array: Add ply_array_contains_uint32_element function
authorHans de Goede <hdegoede@redhat.com>
Tue, 15 Jan 2019 08:48:30 +0000 (09:48 +0100)
committerHans de Goede <hdegoede@redhat.com>
Wed, 16 Jan 2019 08:43:00 +0000 (09:43 +0100)
Add a new ply_array_contains_uint32_element which checks if the queried
ply-array contains an element with the passed in uint32_t value.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
src/libply/ply-array.c
src/libply/ply-array.h

index 7d2395344a7463d42364b8cd1c826e8515fb8426..26532cf71ec3cb2dc91c5ce3b8b6fecb874cb263 100644 (file)
@@ -169,4 +169,22 @@ ply_array_steal_uint32_elements (ply_array_t *array)
         return data;
 }
 
+bool
+ply_array_contains_uint32_element (ply_array_t *array, const uint32_t element)
+{
+        uint32_t const *elements;
+        int i, size;
+
+        assert (array->element_type == PLY_ARRAY_ELEMENT_TYPE_UINT32);
+
+        elements = (uint32_t const *) ply_buffer_get_bytes (array->buffer);
+        size = (ply_buffer_get_size (array->buffer) / sizeof(const uint32_t)) - 1;
+
+        for (i = 0; i < size; i++)
+                if (elements[i] == element)
+                        return true;
+
+        return false;
+}
+
 /* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
index 777485ccbab2e7a04975438c6f3617a5e4dc3a5d..3d8e9c47867fc09d90c577a3e9d7138deb6b7c54 100644 (file)
@@ -23,6 +23,7 @@
 #define PLY_ARRAY_H
 
 #include <stdint.h>
+#include <stdbool.h>
 
 typedef struct _ply_array ply_array_t;
 typedef enum _ply_array_element_type ply_array_element_type_t;
@@ -46,6 +47,8 @@ uint32_t const *ply_array_get_uint32_elements (ply_array_t *array);
 void **ply_array_steal_pointer_elements (ply_array_t *array);
 
 uint32_t *ply_array_steal_uint32_elements (ply_array_t *array);
+bool ply_array_contains_uint32_element (ply_array_t   *array,
+                                        const uint32_t element);
 #endif
 
 #endif /* PLY_ARRAY_H */