mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	Drop wlr_list
This commit is contained in:
		
							parent
							
								
									5888c96da8
								
							
						
					
					
						commit
						57b70a478c
					
				
					 3 changed files with 0 additions and 193 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -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',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										109
									
								
								types/wlr_list.c
									
										
									
									
									
								
							
							
						
						
									
										109
									
								
								types/wlr_list.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue