diff options
-rw-r--r-- | include/wlr/types/wlr_list.h | 83 | ||||
-rw-r--r-- | types/meson.build | 1 | ||||
-rw-r--r-- | types/wlr_list.c | 109 |
3 files changed, 0 insertions, 193 deletions
diff --git a/include/wlr/types/wlr_list.h b/include/wlr/types/wlr_list.h deleted file mode 100644 index 60f388f9..00000000 --- a/include/wlr/types/wlr_list.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * This an unstable interface of wlroots. No guarantees are made regarding the - * future consistency of this API. - */ -#ifndef WLR_USE_UNSTABLE -#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features" -#endif - -#ifndef WLR_TYPES_WLR_LIST_H -#define WLR_TYPES_WLR_LIST_H - -#include <stdbool.h> -#include <stddef.h> - -struct wlr_list { - size_t capacity; - size_t length; - void **items; -}; - -/** - * Initialize a list. Returns true on success, false on failure. - */ -bool wlr_list_init(struct wlr_list *list); - -/** - * Deinitialize a list. - */ -void wlr_list_finish(struct wlr_list *list); - -/** - * Executes `callback` on each element in the list. - */ -void wlr_list_for_each(struct wlr_list *list, void (*callback)(void *item)); - -/** - * Add `item` to the end of a list. - * Returns: new list length or `-1` on failure. - */ -ssize_t wlr_list_push(struct wlr_list *list, void *item); - -/** - * Place `item` into index `index` in the list. - * Returns: new list length or `-1` on failure. - */ -ssize_t wlr_list_insert(struct wlr_list *list, size_t index, void *item); - -/** - * Remove an item from the list. - */ -void wlr_list_del(struct wlr_list *list, size_t index); - -/** - * Remove and return an item from the end of the list. - */ -void *wlr_list_pop(struct wlr_list *list); - -/** - * Get a reference to the last item of a list without removal. - */ -void *wlr_list_peek(struct wlr_list *list); - -/** - * Append each item in `source` to `list`. - * Does not modify `source`. - * Returns: new list length or `-1` on failure. - */ -ssize_t wlr_list_cat(struct wlr_list *list, const struct wlr_list *source); - -/** - * Sort a list using `qsort`. - */ -void wlr_list_qsort(struct wlr_list *list, - int compare(const void *left, const void *right)); - -/** - * Return the index of the first item in the list that returns 0 for the given - * `compare` function, or -1 if none matches. - */ -ssize_t wlr_list_find(struct wlr_list *list, - int compare(const void *item, const void *cmp_to), const void *cmp_to); - -#endif diff --git a/types/meson.build b/types/meson.build index 18e32738..c8d04609 100644 --- a/types/meson.build +++ b/types/meson.build @@ -35,7 +35,6 @@ wlr_files += files( 'wlr_keyboard_shortcuts_inhibit_v1.c', 'wlr_layer_shell_v1.c', 'wlr_linux_dmabuf_v1.c', - 'wlr_list.c', 'wlr_matrix.c', 'wlr_output_damage.c', 'wlr_output_layout.c', diff --git a/types/wlr_list.c b/types/wlr_list.c deleted file mode 100644 index 2be0912a..00000000 --- a/types/wlr_list.c +++ /dev/null @@ -1,109 +0,0 @@ -#include <stdbool.h> -#include <stddef.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <wlr/types/wlr_list.h> - -bool wlr_list_init(struct wlr_list *list) { - list->capacity = 10; - list->length = 0; - list->items = malloc(sizeof(void *) * list->capacity); - if (list->items == NULL) { - return false; - } - return true; -} - -static bool list_resize(struct wlr_list *list) { - if (list->length == list->capacity) { - void *new_items = realloc(list->items, - sizeof(void *) * (list->capacity + 10)); - if (!new_items) { - return false; - } - list->capacity += 10; - list->items = new_items; - } - return true; -} - -void wlr_list_finish(struct wlr_list *list) { - free(list->items); -} - -void wlr_list_for_each(struct wlr_list *list, void (*callback)(void *item)) { - for (size_t i = 0; i < list->length; i++) { - callback(list->items[i]); - } -} - -ssize_t wlr_list_push(struct wlr_list *list, void *item) { - if (!list_resize(list)) { - return -1; - } - list->items[list->length++] = item; - return list->length; -} - -ssize_t wlr_list_insert(struct wlr_list *list, size_t index, void *item) { - if (!list_resize(list)) { - return -1; - } - memmove(&list->items[index + 1], &list->items[index], - sizeof(void *) * (list->length - index)); - list->length++; - list->items[index] = item; - return list->length; -} - -void wlr_list_del(struct wlr_list *list, size_t index) { - list->length--; - memmove(&list->items[index], &list->items[index + 1], - sizeof(void *) * (list->length - index)); -} - -void *wlr_list_pop(struct wlr_list *list) { - if (list->length == 0) { - return NULL; - } - void *last = list->items[list->length - 1]; - wlr_list_del(list, list->length - 1); - return last; -} - -void *wlr_list_peek(struct wlr_list *list) { - if (list->length == 0) { - return NULL; - } - return list->items[list->length - 1]; -} - -ssize_t wlr_list_cat(struct wlr_list *list, const struct wlr_list *source) { - size_t old_len = list->length; - size_t i; - for (i = 0; i < source->length; ++i) { - if (wlr_list_push(list, source->items[i]) == -1) { - list->length = old_len; - return -1; - } - } - return list->length; -} - -void wlr_list_qsort(struct wlr_list *list, - int compare(const void *left, const void *right)) { - qsort(list->items, list->length, sizeof(void *), compare); -} - -ssize_t wlr_list_find(struct wlr_list *list, - int compare(const void *item, const void *data), const void *data) { - for (size_t i = 0; i < list->length; i++) { - void *item = list->items[i]; - if (compare(item, data) == 0) { - return i; - } - } - return -1; -} |