*** empty log message ***
[libfirm] / ir / adt / iterator.h
1 /**
2  * Iterators for the several collection types used in firm.
3  * Useful for formatted and unified dumping of collections of objects.
4  * @author Sebastian Hack
5  * @date 29.11.2004
6  */
7
8 /**
9  * Check, if some memory object appears to be an iterator.
10  * @param ptr Some memory.
11  * @return 1, if that memory area appears to be an iterator, 0 if not.
12  */
13 int is_iterator(const void *ptr);
14
15 typedef struct _iterator_t {
16         char magic[4];
17         void *(*start)(void *collection);
18         void *(*next)(void *collection, void *curr);
19         void (*finish)(void *collection, void *curr);
20 } iterator_t;
21
22 /**
23  * An iterator implementation for psets.
24  */
25 extern const iterator_t *it_pset;
26
27 /**
28  * An iterator implementation for linked lists.
29  */
30 extern const iterator_t *it_list;