diff src/ploki/list.h @ 4223:ac0403686959

<oerjan> rm -rf src/ploki; mv ploki src
author HackBot
date Fri, 20 Dec 2013 22:18:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ploki/list.h	Fri Dec 20 22:18:50 2013 +0000
@@ -0,0 +1,42 @@
+#ifndef LIST_H_
+#define LIST_H_
+
+#include "config.h"
+
+#include <stddef.h>
+
+struct li_whale {
+	struct val **field;
+	size_t length, size;
+	size_t refs;
+};
+
+struct list {
+	struct li_whale *lwp;
+	size_t offset, length;
+};
+
+struct list *li_new(void);
+struct list *li_dup(const struct list *);
+void li_decouple(struct list *);
+void li_delete(struct list *);
+
+ATTR_PURE
+size_t li_length(const struct list *);
+ATTR_PURE
+struct val *li_at(const struct list *, size_t);
+ATTR_PURE
+int li_cmp(const struct list *, const struct list *);
+
+void li_zero(struct list *);
+void li_push(struct list *, struct val *);
+void li_push_cpy(struct list *, const struct val *);
+void li_append(struct list *, const struct list *);
+void li_reverse(struct list *);
+void li_trunc(struct list *, size_t);
+void li_shift(struct list *, size_t);
+
+#define li_length(l) ((l)->length + 0)
+#define li_zero(l) ((void)(l->offset = l->length = 0))
+
+#endif /* LIST_H_ */