aboutsummaryrefslogtreecommitdiffstats
path: root/src/wayland-util.c
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2011-08-12 15:09:00 -0400
committerKristian Høgsberg <krh@bitplanet.net>2011-08-12 16:25:14 -0400
commit4c260db68c028f05401727d1911582ae8b87cd70 (patch)
tree89d6d7fdfa7e1eb7ee39194a38d6711cde66e6bc /src/wayland-util.c
parentChange scanner.c license to MIT (diff)
downloadwayland-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.c123
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);
+}