X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fadt%2Fiterator.h;h=bf74c1106d8a09d014169681002ed1025c9e1c14;hb=afd2f7145cdcfcd54b80f6394af8faacb2409ced;hp=68847105b116546905454b1e49e6950c8777d108;hpb=766bdbe391d96c580ff26fffcc4ccaa2d0a08ad4;p=libfirm diff --git a/ir/adt/iterator.h b/ir/adt/iterator.h index 68847105b..bf74c1106 100644 --- a/ir/adt/iterator.h +++ b/ir/adt/iterator.h @@ -4,27 +4,38 @@ * @author Sebastian Hack * @date 29.11.2004 */ +#ifndef _ITERATOR_H +#define _ITERATOR_H + +#include "fourcc.h" + +/** + * The iterator magic word. + */ +#define ITERATOR_MAGIC FOURCC('I', 'T', 'E', 'R') /** * Check, if some memory object appears to be an iterator. * @param ptr Some memory. * @return 1, if that memory area appears to be an iterator, 0 if not. */ -int is_iterator(const void *ptr); +#define is_iterator(ptr) (((const iterator_t *) (ptr))->magic == ITERATOR_MAGIC) typedef struct _iterator_t { - char magic[4]; + unsigned magic; void *(*start)(void *collection); void *(*next)(void *collection, void *curr); void (*finish)(void *collection, void *curr); } iterator_t; /** - * An iterator implementation for psets. + * An iterator implementation for linked lists. */ -extern const iterator_t *it_pset; +extern const iterator_t *list_iterator; /** - * An iterator implementation for linked lists. + * An iterator implementation for psets. */ -extern const iterator_t *it_list; +extern const iterator_t *pset_iterator; + +#endif