Set of values. More...
Go to the source code of this file.
Classes | |
struct | _SetIterator |
Defines | |
#define | SET_NULL ((void *) 0) |
Typedefs | |
typedef struct _Set | Set |
typedef struct _SetIterator | SetIterator |
typedef struct _SetEntry | SetEntry |
typedef void * | SetValue |
typedef unsigned long(* | SetHashFunc )(SetValue value) |
typedef int(* | SetEqualFunc )(SetValue value1, SetValue value2) |
typedef void(* | SetFreeFunc )(SetValue value) |
Functions | |
Set * | set_new (SetHashFunc hash_func, SetEqualFunc equal_func) |
void | set_free (Set *set) |
void | set_register_free_function (Set *set, SetFreeFunc free_func) |
int | set_insert (Set *set, SetValue data) |
int | set_remove (Set *set, SetValue data) |
int | set_query (Set *set, SetValue data) |
int | set_num_entries (Set *set) |
SetValue * | set_to_array (Set *set) |
Set * | set_union (Set *set1, Set *set2) |
Set * | set_intersection (Set *set1, Set *set2) |
void | set_iterate (Set *set, SetIterator *iter) |
int | set_iter_has_more (SetIterator *iterator) |
SetValue | set_iter_next (SetIterator *iterator) |
Set of values.
A set stores a collection of values. Each value can only exist once in the set.
To create a new set, use set_new. To destroy a set, use set_free.
To add a value to a set, use set_insert. To remove a value from a set, use set_remove.
To find the number of entries in a set, use set_num_entries.
To query if a particular value is in a set, use set_query.
To iterate over all values in a set, use set_iterate to initialise a SetIterator structure, with set_iter_next and set_iter_has_more to read each value in turn.
Two sets can be combined (union) using set_union, while the intersection of two sets can be generated using set_intersection.
#define SET_NULL ((void *) 0) |
A null SetValue.
typedef struct _Set Set |
typedef struct _SetEntry SetEntry |
Internal structure representing an entry in the set.
typedef int(* SetEqualFunc)(SetValue value1, SetValue value2) |
Equality function. Compares two values to determine if they are equivalent.
typedef void(* SetFreeFunc)(SetValue value) |
Function used to free values stored in a set. See set_register_free_function.
typedef unsigned long(* SetHashFunc)(SetValue value) |
Hash function. Generates a hash key for values to be stored in a set.
typedef struct _SetIterator SetIterator |
An object used to iterate over a set.
void set_free | ( | Set * | set | ) |
Destroy a set.
set | The set to destroy. |
Add a value to a set.
set | The set. | |
data | The value to add to the set. |
Perform an intersection of two sets.
set1 | The first set. | |
set2 | The second set. |
int set_iter_has_more | ( | SetIterator * | iterator | ) |
Determine if there are more values in the set to iterate over.
iterator | The set iterator object. |
SetValue set_iter_next | ( | SetIterator * | iterator | ) |
Using a set iterator, retrieve the next value from the set.
iterator | The set iterator. |
void set_iterate | ( | Set * | set, | |
SetIterator * | iter | |||
) |
Initialise a SetIterator structure to iterate over the values in a set.
set | The set to iterate over. | |
iter | Pointer to an iterator structure to initialise. |
Set* set_new | ( | SetHashFunc | hash_func, | |
SetEqualFunc | equal_func | |||
) |
Create a new set.
hash_func | Hash function used on values in the set. | |
equal_func | Compares two values in the set to determine if they are equal. |
int set_num_entries | ( | Set * | set | ) |
Retrieve the number of entries in a set
set | The set. |
Query if a particular value is in a set.
set | The set. | |
data | The value to query for. |
void set_register_free_function | ( | Set * | set, | |
SetFreeFunc | free_func | |||
) |
Register a function to be called when values are removed from the set.
set | The set. | |
free_func | Function to call when values are removed from the set. |
Remove a value from a set.
set | The set. | |
data | The value to remove from the set. |
Create an array containing all entries in a set.
set | The set. |