*/
FIRM_API void *pset_first(pset *pset);
+#define pset_first(type, pset) ((type*)pset_first((pset)))
+
/**
* Returns the next element of a pset.
*
*/
FIRM_API void *pset_next(pset *pset);
+#define pset_next(type, pset) ((type*)pset_next((pset)))
+
/**
* Breaks the iteration of a set. Must be called before
* the next pset_first() call if the iteration was NOT
* @param type type of iterator variable
* @param entry the iterator
*/
-#define foreach_pset(pset, type, entry) for (entry = (type)pset_first(pset); entry; entry = (type)pset_next(pset))
+#define foreach_pset(pset, type, entry) for (type *entry = pset_first(type, pset); entry; entry = pset_next(type, pset))
/**
* Inserts all elements of the pointer set src into