From de01e654cef2c72dce3adb580e20fe2cbc8aeb16 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 25 Apr 2017 15:06:58 -0400 Subject: Flesh out wayland backend somewhat, add example --- include/wlr/common/list.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 include/wlr/common/list.h (limited to 'include/wlr/common/list.h') diff --git a/include/wlr/common/list.h b/include/wlr/common/list.h new file mode 100644 index 00000000..2bc82570 --- /dev/null +++ b/include/wlr/common/list.h @@ -0,0 +1,31 @@ +#ifndef _WLR_LIST_H +#define _WLR_LIST_H + +#include + +typedef struct { + size_t capacity; + size_t length; + void **items; +} list_t; + +list_t *list_create(void); +void list_free(list_t *list); +void list_foreach(list_t *list, void (*callback)(void* item)); +void list_add(list_t *list, void *item); +void list_push(list_t *list, void *item); +void list_insert(list_t *list, size_t index, void *item); +void list_del(list_t *list, size_t index); +void *list_pop(list_t *list); +void *list_peek(list_t *list); +void list_cat(list_t *list, list_t *source); +// See qsort. Remember to use *_qsort functions as compare functions, +// because they dereference the left and right arguments first! +void list_qsort(list_t *list, int compare(const void *left, const void *right)); +// Return index for first item in list that returns 0 for given compare +// function or -1 if none matches. +int list_seq_find(list_t *list, + int compare(const void *item, const void *cmp_to), + const void *cmp_to); + +#endif -- cgit v1.2.3