view src/list.h @ 10:68f85ffc6029

Finished rbtree. Reworked the iterators in list. Minor tweaks to others.
author Eris Caffee <discordia@eldalin.com>
date Fri, 28 Sep 2012 18:24:53 -0500
parents abdba37f67a2
children d359966ed8de
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);
13 size_t list_size(struct list * l);
14 void * list_push_back(struct list * l, void * elem);
15 void * list_pop_back(struct list * l);
16 void * list_push_front(struct list * l, void * elem);
17 void * list_pop_front(struct list * l);
19 // The iterators are different than their c++ STL counterparts.
20 // They are bi-directional, and list_end points to the last element, not the empty space beyond the last elem.
21 struct list_iterator * list_begin (struct list * l);
22 struct list_iterator * list_end (struct list * l);
23 struct list_iterator * list_next (struct list_iterator * lit);
24 struct list_iterator * list_prev (struct list_iterator * lit);
25 struct list_iterator * list_find (struct list_iterator * it, void * data);
26 void * list_remove (struct list_iterator * lit);
27 void * list_value (struct list_iterator * lit);
29 struct list_iterator * list_insert_after (struct list_iterator * lit, void * elem);
30 struct list_iterator * list_insert_before (struct list_iterator * lit, void * elem);
32 #endif