diff options
| author | Kristian Høgsberg <krh@bitplanet.net> | 2011-08-12 15:09:00 -0400 |
|---|---|---|
| committer | Kristian Høgsberg <krh@bitplanet.net> | 2011-08-12 16:25:14 -0400 |
| commit | 4c260db68c028f05401727d1911582ae8b87cd70 (patch) | |
| tree | 89d6d7fdfa7e1eb7ee39194a38d6711cde66e6bc /src/wayland-util.c | |
| parent | Change scanner.c license to MIT (diff) | |
| download | wayland-4c260db68c028f05401727d1911582ae8b87cd70.tar wayland-4c260db68c028f05401727d1911582ae8b87cd70.tar.gz wayland-4c260db68c028f05401727d1911582ae8b87cd70.tar.bz2 wayland-4c260db68c028f05401727d1911582ae8b87cd70.tar.lz wayland-4c260db68c028f05401727d1911582ae8b87cd70.tar.xz wayland-4c260db68c028f05401727d1911582ae8b87cd70.tar.zst wayland-4c260db68c028f05401727d1911582ae8b87cd70.zip | |
Rename source subdir from wayland to src
Diffstat (limited to 'src/wayland-util.c')
| -rw-r--r-- | src/wayland-util.c | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/wayland-util.c b/src/wayland-util.c new file mode 100644 index 0000000..3643274 --- /dev/null +++ b/src/wayland-util.c @@ -0,0 +1,123 @@ +/* + * Copyright © 2008 Kristian Høgsberg + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting documentation, and + * that the name of the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#include <stdlib.h> +#include <stdint.h> +#include <string.h> +#include "wayland-util.h" + +WL_EXPORT void +wl_list_init(struct wl_list *list) +{ + list->prev = list; + list->next = list; +} + +WL_EXPORT void +wl_list_insert(struct wl_list *list, struct wl_list *elm) +{ + elm->prev = list; + elm->next = list->next; + list->next = elm; + elm->next->prev = elm; +} + +WL_EXPORT void +wl_list_remove(struct wl_list *elm) +{ + elm->prev->next = elm->next; + elm->next->prev = elm->prev; +} + +WL_EXPORT int +wl_list_length(struct wl_list *list) +{ + struct wl_list *e; + int count; + + count = 0; + e = list->next; + while (e != list) { + e = e->next; + count++; + } + + return count; +} + +WL_EXPORT int +wl_list_empty(struct wl_list *list) +{ + return list->next == list; +} + +WL_EXPORT void +wl_array_init(struct wl_array *array) +{ + memset(array, 0, sizeof *array); +} + +WL_EXPORT void +wl_array_release(struct wl_array *array) +{ + free(array->data); +} + +WL_EXPORT void * +wl_array_add(struct wl_array *array, int size) +{ + int alloc; + void *data, *p; + + if (array->alloc > 0) + alloc = array->alloc; + else + alloc = 16; + + while (alloc < array->size + size) + alloc *= 2; + + if (array->alloc < alloc) { + if (array->alloc > 0) + data = realloc(array->data, alloc); + else + data = malloc(alloc); + + if (data == NULL) + return 0; + array->data = data; + array->alloc = alloc; + } + + p = array->data + array->size; + array->size += size; + + return p; +} + +WL_EXPORT void +wl_array_copy(struct wl_array *array, struct wl_array *source) +{ + array->size = 0; + wl_array_add(array, source->size); + memcpy(array->data, source->data, source->size); +} |
