mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include "list.h"
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
list_t *create_list(void) {
 | 
						|
	list_t *list = malloc(sizeof(list_t));
 | 
						|
	list->capacity = 10;
 | 
						|
	list->length = 0;
 | 
						|
	list->items = malloc(sizeof(void*) * list->capacity);
 | 
						|
	return list;
 | 
						|
}
 | 
						|
 | 
						|
static void list_resize(list_t *list) {
 | 
						|
	if (list->length == list->capacity) {
 | 
						|
		list->capacity += 10;
 | 
						|
		list->items = realloc(list->items, sizeof(void*) * list->capacity);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
void list_free(list_t *list) {
 | 
						|
	if (list == NULL) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	free(list->items);
 | 
						|
	free(list);
 | 
						|
}
 | 
						|
 | 
						|
void list_add(list_t *list, void *item) {
 | 
						|
	list_resize(list);
 | 
						|
	list->items[list->length++] = item;
 | 
						|
}
 | 
						|
 | 
						|
void list_insert(list_t *list, int index, void *item) {
 | 
						|
	list_resize(list);
 | 
						|
	memmove(&list->items[index + 1], &list->items[index], sizeof(void*) * (list->length - index));
 | 
						|
	list->length++;
 | 
						|
	list->items[index] = item;
 | 
						|
}
 | 
						|
 | 
						|
void list_del(list_t *list, int index) {
 | 
						|
	list->length--;
 | 
						|
	memmove(&list->items[index], &list->items[index + 1], sizeof(void*) * (list->length - index));
 | 
						|
}
 | 
						|
 | 
						|
void list_cat(list_t *list, list_t *source) {
 | 
						|
	int i;
 | 
						|
	for (i = 0; i < source->length; ++i) {
 | 
						|
		list_add(list, source->items[i]);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
void list_sort(list_t *list, int compare(const void *left, const void *right)) {
 | 
						|
	qsort(list->items, list->length, sizeof(void *), compare);
 | 
						|
}
 |