mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-29 05:40:16 -04:00
Add wl_array_for_each
This commit is contained in:
parent
ab0c7c58b9
commit
8e2cac7ae4
3 changed files with 27 additions and 6 deletions
|
|
@ -99,7 +99,7 @@ wl_data_source_send_offer(struct wl_data_source *source,
|
|||
struct wl_resource *target)
|
||||
{
|
||||
struct wl_data_offer *offer;
|
||||
char **p, **end;
|
||||
char **p;
|
||||
|
||||
offer = malloc(sizeof *offer);
|
||||
if (offer == NULL)
|
||||
|
|
@ -122,8 +122,7 @@ wl_data_source_send_offer(struct wl_data_source *source,
|
|||
|
||||
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;
|
||||
|
|
@ -401,10 +400,9 @@ destroy_data_source(struct wl_resource *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);
|
||||
|
|
|
|||
|
|
@ -148,6 +148,11 @@ struct wl_array {
|
|||
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);
|
||||
|
|
|
|||
|
|
@ -116,3 +116,21 @@ TEST(array_copy)
|
|||
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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue