libFirm
|
Generic Hashset. More...
Data Structures | |
struct | set_entry |
The entry of a set, representing an element in the set and its meta-information. More... | |
Macros | |
#define | set_first(type, set) ((type*)set_first((set))) |
Returns the first element of a set. More... | |
#define | set_next(type, set) ((type*)set_next((set))) |
Returns the next element of a set. More... | |
#define | foreach_set(set, type, entry) for (type *entry = set_first(type, set); entry; entry = set_next(type, set)) |
Iterates over an set. More... | |
Typedefs | |
typedef struct set | set |
The abstract type of a set. More... | |
typedef int(* | set_cmp_fun )(void const *elt, void const *key, size_t size) |
The type of a set compare function. More... | |
Functions | |
set * | new_set (set_cmp_fun func, size_t slots) |
Creates a new set. More... | |
void | del_set (set *set) |
Deletes a set and all elements of it. More... | |
size_t | set_count (set const *set) |
Returns the number of elements in a set. More... | |
void * | set_find (set *set, void const *key, size_t size, unsigned hash) |
Searches an element in a set. More... | |
void * | set_insert (set *set, void const *key, size_t size, unsigned hash) |
Inserts an element into a set. More... | |
set_entry * | set_hinsert (set *set, void const *key, size_t size, unsigned hash) |
Inserts an element into a set and returns its set_entry. More... | |
set_entry * | set_hinsert0 (set *set, void const *key, size_t size, unsigned hash) |
Inserts an element into a set, zero-terminate it and returns its set_entry. More... | |
void * | set_first (set *set) |
Returns the first element of a set. More... | |
void * | set_next (set *set) |
Returns the next element of a set. More... | |
void | set_break (set *set) |
Breaks the iteration of a set. More... | |
Generic Hashset.
struct set_entry |
Returns the first element of a set.
This is a wrapper for set_first(set); It allows to express the intended type of the set elements (instead of weakly typed void*).
set | the set to iterate |
type | type of the set elements |
Returns the next element of a set.
This is a wrapper for set_next(set); It allows to express the intended type of the set elements (instead of weakly typed void*).
set | the set to iterate |
type | type of the set elements |
typedef int(* set_cmp_fun)(void const *elt, void const *key, size_t size) |
The type of a set compare function.
elt | pointer to an element |
key | pointer to another element |
size | size of the elements |
void del_set | ( | set * | set | ) |
Deletes a set and all elements of it.
set | the set to delete |
set* new_set | ( | set_cmp_fun | func, |
size_t | slots | ||
) |
Creates a new set.
func | The compare function of this set. |
slots | Initial number of collision chains. I.e., #slots different keys can be hashed without collisions. |
void set_break | ( | set * | set | ) |
Breaks the iteration of a set.
Must be called before the next set_first() call if the iteration was NOT finished.
set | the set |
size_t set_count | ( | set const * | set | ) |
Returns the number of elements in a set.
set | the set |
void* set_find | ( | set * | set, |
void const * | key, | ||
size_t | size, | ||
unsigned | hash | ||
) |
Searches an element in a set.
set | the set to search in |
key | the element to is searched |
size | the size of key |
hash | the hash value of key |
void* set_first | ( | set * | set | ) |
Returns the first element of a set.
set | the set to iterate |
Inserts an element into a set and returns its set_entry.
set | the set to insert in |
key | a pointer to the element to be inserted. Element is copied! |
size | the size of the element that should be inserted |
hash | the hash-value of the element |
Inserts an element into a set, zero-terminate it and returns its set_entry.
set | the set to insert in |
key | a pointer to the element to be inserted. Element is copied! |
size | the size of the element that should be inserted |
hash | the hash-value of the element |
void* set_insert | ( | set * | set, |
void const * | key, | ||
size_t | size, | ||
unsigned | hash | ||
) |
Inserts an element into a set.
set | the set to insert in |
key | a pointer to the element to be inserted. Element is copied! |
size | the size of the element that should be inserted |
hash | the hash-value of the element |
void* set_next | ( | set * | set | ) |
Returns the next element of a set.
set | the set to iterate |