ucx/dlist.h

changeset 1
1bcaac272cdf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ucx/dlist.h	Fri Nov 30 21:18:13 2012 +0100
@@ -0,0 +1,46 @@
+/* 
+ * 
+ */
+
+#ifndef DLIST_H
+#define	DLIST_H
+
+#include "ucx.h"
+#include <stddef.h>
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+typedef struct UcxDlist UcxDlist;
+struct UcxDlist {
+    void     *data;
+    UcxDlist *restrict next;
+    UcxDlist *restrict prev;
+};
+
+UcxDlist *restrict ucx_dlist_clone(UcxDlist *restrict l,
+        copy_func fnc, void* data);
+int ucx_dlist_equals(const UcxDlist *l1, const UcxDlist *l2,
+        cmp_func fnc, void* data);
+
+void ucx_dlist_free(UcxDlist *l);
+UcxDlist *ucx_dlist_append(UcxDlist *l, void *data);
+UcxDlist *ucx_dlist_prepend(UcxDlist *l, void *data);
+UcxDlist *ucx_dlist_concat(UcxDlist *restrict l1, UcxDlist *restrict l2);
+UcxDlist *ucx_dlist_last(const UcxDlist *l);
+UcxDlist *ucx_dlist_get(const UcxDlist *l, int index);
+size_t ucx_dlist_size(const UcxDlist *l);
+
+UcxDlist *ucx_dlist_sort(UcxDlist *l, cmp_func fnc, void *data);
+
+/* dlist specific functions */
+UcxDlist *ucx_dlist_first(const UcxDlist *l);
+UcxDlist *ucx_dlist_remove(UcxDlist *l, UcxDlist *e);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* DLIST_H */
+

mercurial