some clean up
[libfirm] / ir / adt / iterator.c
1
2 #include <string.h>
3
4 #include "pset.h"
5 #include "list.h"
6 #include "iterator.h"
7
8
9 static void *it_pset_start(void *collection)
10 {
11         return pset_first(collection);
12 }
13
14 static void *it_pset_next(void *collection, void *curr)
15 {
16         return pset_next(collection);
17 }
18
19 static void it_pset_finish(void *collection, void *curr)
20 {
21 }
22
23 static const iterator_t iterator_pset = {
24         ITERATOR_MAGIC,
25         it_pset_start,
26         it_pset_next,
27         it_pset_finish
28 };
29
30 const iterator_t *pset_iterator = &iterator_pset;
31
32
33 static void *it_list_next(void *coll, void *it)
34 {
35         struct list_head *head = coll;
36         struct list_head *curr = it;
37         return curr->next != head ? curr->next : NULL;
38 }
39
40 static void *it_list_start(void *coll)
41 {
42         return it_list_next(coll, coll);
43 }
44
45 static void it_list_finish(void *coll, void *curr)
46 {
47 }
48
49 static const iterator_t iterator_list = {
50         ITERATOR_MAGIC,
51         it_list_start,
52         it_list_next,
53         it_list_finish
54 };
55
56 const iterator_t *list_iterator = &iterator_list;