X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=include%2Flibfirm%2Fadt%2Fpset.h;h=3a3d69dcad1c39aba207ad9a36fa7c98684acaf8;hb=b451899be294500fe974c6e97febc59cabdda114;hp=4476c2aabca7881ea0dedbf0a560fc8f310945b1;hpb=582b49a2092febc251d9e7f6b6a53cfbc827b932;p=libfirm diff --git a/include/libfirm/adt/pset.h b/include/libfirm/adt/pset.h index 4476c2aab..3a3d69dca 100644 --- a/include/libfirm/adt/pset.h +++ b/include/libfirm/adt/pset.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -22,9 +22,6 @@ * @brief optimized version of set for sets containing only pointers * (deprecated) * @author Markus Armbruster - * @version $Id$ - * @note This code has been deprecated. Use pset_new or cpset for new - * code. */ #ifndef FIRM_ADT_PSET_H #define FIRM_ADT_PSET_H @@ -32,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. @@ -54,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 it's meta-information */ +/** 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; /** @@ -91,7 +98,7 @@ typedef int (*pset_cmp_fun) (const void *elt, const void *key); * @returns * created pset */ -FIRM_API pset *new_pset(pset_cmp_fun func, int slots); +FIRM_API pset *new_pset(pset_cmp_fun func, size_t slots); /** * Deletes a pset. @@ -99,7 +106,7 @@ FIRM_API pset *new_pset(pset_cmp_fun func, int slots); * @param pset the pset * * @note - * This does NOT delete the elements of this pset, just it's pointers! + * This does NOT delete the elements of this pset, just its pointers! */ FIRM_API void del_pset(pset *pset); @@ -108,7 +115,7 @@ FIRM_API void del_pset(pset *pset); * * @param pset the pset */ -FIRM_API int pset_count(pset *pset); +FIRM_API size_t pset_count(pset *pset); /** * Searches an element pointer in a pset. @@ -205,9 +212,10 @@ FIRM_API void pset_break(pset *pset); * Iterates oven an pset. * * @param pset the 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,40 +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 - -#ifdef DEBUG -/** - * Describe a pset. - * - * Writes a description of a set to stdout. The description includes: - * - a header telling how many elements (nkey) and segments (nseg) are in use - * - for every collision chain the number of element with its hash values - * - * @param pset the pset - */ -void pset_describe (pset *pset); -#endif - -/* @@@ NYI */ -#define PSET_VRFY(pset) (void)0 - - -/* 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