struct wl_resource *target)
{
struct wl_data_offer *offer;
- char **p, **end;
+ char **p;
offer = malloc(sizeof *offer);
if (offer == NULL)
wl_data_device_send_data_offer(target, &offer->resource);
- end = source->mime_types.data + source->mime_types.size;
- for (p = source->mime_types.data; p < end; p++)
+ wl_array_for_each(p, &source->mime_types)
wl_data_offer_send_offer(&offer->resource, *p);
return &offer->resource;
{
struct wl_data_source *source =
container_of(resource, struct wl_data_source, resource);
- char **p, **end;
+ char **p;
- end = source->mime_types.data + source->mime_types.size;
- for (p = source->mime_types.data; p < end; p++)
+ wl_array_for_each(p, &source->mime_types)
free(*p);
wl_array_release(&source->mime_types);
void *data;
};
+#define wl_array_for_each(pos, array) \
+ for (pos = (array)->data; \
+ (const char *) pos < ((const char *) (array)->data + (array)->size); \
+ (pos)++)
+
void wl_array_init(struct wl_array *array);
void wl_array_release(struct wl_array *array);
void *wl_array_add(struct wl_array *array, int size);
wl_array_release(&source);
wl_array_release(©);
}
+
+TEST(array_for_each)
+{
+ static const int elements[] = { 77, 12, 45192, 53280, 334455 };
+ struct wl_array array;
+ int *p, i;
+
+ wl_array_init(&array);
+ for (i = 0; i < 5; i++) {
+ p = wl_array_add(&array, sizeof *p);
+ *p = elements[i];
+ }
+
+ i = 0;
+ wl_array_for_each(p, &array)
+ assert(*p == elements[i++]);
+ assert(i == 5);
+}