meson: Don't build intel shared components by default
[mesa.git] / src / util / u_dynarray.h
index fdcd09c4befeae7abdcb69c51a19a9caef0b0dda..cc316323f2884e96d68c89618f07e620ac082082 100644 (file)
@@ -68,6 +68,12 @@ util_dynarray_fini(struct util_dynarray *buf)
    }
 }
 
+static inline void
+util_dynarray_clear(struct util_dynarray *buf)
+{
+       buf->size = 0;
+}
+
 #define DYN_ARRAY_INITIAL_SIZE 64
 
 /* use util_dynarray_trim to reduce the allocated storage */
@@ -138,6 +144,20 @@ util_dynarray_trim(struct util_dynarray *buf)
    for (type *elem = (type *)(buf)->data; \
         elem < (type *)((char *)(buf)->data + (buf)->size); elem++)
 
+#define util_dynarray_delete_unordered(buf, type, v)                    \
+   do {                                                                 \
+      unsigned num_elements = (buf)->size / sizeof(type);               \
+      unsigned i;                                                       \
+      for (i = 0; i < num_elements; i++) {                              \
+         type __v = *util_dynarray_element((buf), type, (i));           \
+         if (v == __v) {                                                \
+            memcpy(util_dynarray_element((buf), type, (i)),             \
+                   util_dynarray_pop_ptr((buf), type), sizeof(type));   \
+            break;                                                      \
+         }                                                              \
+      }                                                                 \
+   } while (0)
+
 #ifdef __cplusplus
 }
 #endif