mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-19 06:47:02 -04:00
util/array: Add reverse helpers
This commit is contained in:
parent
3c71f61c0b
commit
55bc5a0d99
2 changed files with 34 additions and 0 deletions
23
util/array.c
23
util/array.c
|
|
@ -38,3 +38,26 @@ bool array_realloc(struct wl_array *arr, size_t size) {
|
|||
arr->alloc = alloc;
|
||||
return true;
|
||||
}
|
||||
|
||||
void *array_reversed_start(struct wl_array *arr) {
|
||||
char *data = arr->data;
|
||||
return data + arr->alloc - arr->size;
|
||||
}
|
||||
|
||||
void *array_reversed_add(struct wl_array *arr, size_t size) {
|
||||
if (arr->size + size > arr->alloc) {
|
||||
size_t new_alloc = arr->alloc * 2;
|
||||
char *new = malloc(new_alloc);
|
||||
if (!new) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memcpy(new + (new_alloc - arr->size), array_reversed_start(arr), arr->size);
|
||||
free(arr->data);
|
||||
arr->data = new;
|
||||
arr->alloc = new_alloc;
|
||||
}
|
||||
|
||||
arr->size += size;
|
||||
return array_reversed_start(arr);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue