Mercurial > repo
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_ */