view src/list.h @ 9:abdba37f67a2

Red-black tree in progress. Linked list needs iterators redone, also in progress. Sleepy.
author Eris Caffee <discordia@eldalin.com>
date Fri, 28 Sep 2012 03:08:25 -0500
parents e117c4d93602
children 68f85ffc6029
line source
1 #ifndef LIST_H_
2 #define LIST_H_
4 #include <stddef.h>
6 struct list_node;
7 struct list;
8 struct list_iterator;
10 struct list * list_new(void);
11 void list_delete(struct list * l);
12 size_t list_size(struct list * l);
13 void * list_push_back(struct list * l, void * elem);
14 void * list_pop_back(struct list * l);
15 void * list_push_front(struct list * l, void * elem);
16 void * list_pop_front(struct list * l);
18 // The iterators are different than their c++ STL counterparts.
19 // They are bi-directional, and list_end points to the last element, not the empty space beyond the last elem.
20 struct list_iterator * list_begin(struct list * l);
21 struct list_iterator * list_end(struct list * l);
22 void * list_next(struct list_iterator * lit);
23 void * list_prev(struct list_iterator * lit);
24 void * list_erase(struct list_iterator * lit);
25 void * list_insert_after(struct list_iterator * lit, void * elem);
26 void * list_insert_before(struct list_iterator * lit, void * elem);
27 void * list_value(struct list_iterator * lit);
29 #endif