X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=include%2Flibfirm%2Fadt%2Fpset.h;h=3a3d69dcad1c39aba207ad9a36fa7c98684acaf8;hb=b451899be294500fe974c6e97febc59cabdda114;hp=0ac51a345824d5355d60e923cdf007017aee5bec;hpb=893552041a3fe4feeaa2edba69b8f2a282c6f052;p=libfirm diff --git a/include/libfirm/adt/pset.h b/include/libfirm/adt/pset.h index 0ac51a345..3a3d69dca 100644 --- a/include/libfirm/adt/pset.h +++ b/include/libfirm/adt/pset.h @@ -22,8 +22,6 @@ * @brief optimized version of set for sets containing only pointers * (deprecated) * @author Markus Armbruster - * @note This code has been deprecated. Use pset_new or cpset for new - * code. */ #ifndef FIRM_ADT_PSET_H #define FIRM_ADT_PSET_H @@ -31,10 +29,17 @@ #include #include "hashptr.h" -#include "iterator.h" #include "../begin.h" +/** + * @ingroup adt + * @defgroup pset Pointer Set + * (Hash)sets containing pointers. + * @note This code has been deprecated. Use pset_new or cpset for new code. + * @{ + */ + /** * The default comparison function for pointers. * @param x A pointer. @@ -53,20 +58,23 @@ FIRM_API int pset_default_ptr_cmp(const void *x, const void *y); */ typedef struct pset pset; -/* - * Define some convenience macros using the predefined hash function. - */ -#define pset_insert_ptr(set,key) pset_insert(set, key, HASH_PTR(key)) -#define pset_hinsert_ptr(set,key) pset_hinsert(set, key, HASH_PTR(key)) -#define pset_remove_ptr(set,key) pset_remove(set, key, HASH_PTR(key)) -#define pset_find_ptr(set,key) pset_find(set, key, HASH_PTR(key)) +/** Inserts into pointer set with default hash function. */ +#define pset_insert_ptr(set,key) pset_insert(set, key, hash_ptr(key)) +/** Inserts into pointer set with default hash function and return entry */ +#define pset_hinsert_ptr(set,key) pset_hinsert(set, key, hash_ptr(key)) +/** Removes pointer from pointer set with default hash function */ +#define pset_remove_ptr(set,key) pset_remove(set, key, hash_ptr(key)) +/** Finds pointer in pointer set with default hash function */ +#define pset_find_ptr(set,key) pset_find(set, key, hash_ptr(key)) +/** Creates new pointer set with default compare function */ #define pset_new_ptr(slots) new_pset(pset_default_ptr_cmp, slots) +/** Creates new pointer set with default compare function and default size */ #define pset_new_ptr_default() pset_new_ptr(64) /** The entry of a pset, representing an element pointer in the set and its meta-information */ typedef struct { - unsigned hash; - void *dptr; + unsigned hash; /**< hash value of element */ + void *dptr; /**< pointer to element data */ } pset_entry; /** @@ -207,7 +215,7 @@ FIRM_API void pset_break(pset *pset); * @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 = (type*)pset_first(pset); entry; entry = (type*)pset_next(pset)) /** * Inserts all elements of the pointer set src into @@ -218,6 +226,8 @@ FIRM_API void pset_break(pset *pset); */ FIRM_API void pset_insert_pset_ptr(pset *target, pset *src); +/** @cond PRIVATE */ + #define new_pset(cmp, slots) ((new_pset) ((cmp), (slots))) #define pset_find(pset, key, hash) \ _pset_search ((pset), (key), (hash), _pset_find) @@ -226,23 +236,14 @@ FIRM_API void pset_insert_pset_ptr(pset *target, pset *src); #define pset_hinsert(pset, key, hash) \ ((pset_entry *)_pset_search ((pset), (key), (hash), _pset_hinsert)) -#ifdef STATS -/** - * Prints statistics on a set to stdout. - * - * @param pset the pset - */ -void pset_stats (pset *pset); -#else -# define pset_stats(s) ((void)0) -#endif - -/* Private */ - typedef enum { _pset_find, _pset_insert, _pset_hinsert } _pset_action; FIRM_API void *_pset_search(pset *, const void *, unsigned, _pset_action); +/** @endcond */ + +/** @} */ + #include "../end.h" #endif