A simple set implementation, based on hash.h.
More...
|
|
typedef struct set_entry_s | SET_ENTRY_T |
| | This structure represents an entry in the set.
|
|
typedef struct set_s | SET_T |
| | This represents a set.
|
|
| SET_T * | set_new (const unsigned long slots) |
| | Create a new set with the given number of slots.
|
|
SET_T * | set_new_string (const unsigned long slots) |
| | Create a new set which holds strings (pointers to char).
|
|
SET_T * | set_new_int (const unsigned long slots) |
| | Create a new set which holds pointers to integers.
|
|
void * | set_add_int (SET_T *set, const int val) |
| | Helper to add integers to sets.
|
| void | set_free (SET_T *set) |
| | Frees memory (including values) associated with a set.
|
| void * | set_add (SET_T *set, const void *val) |
| | Add a value to a set.
|
| void * | set_del (SET_T *set, const void *val) |
| | Remove a value from the set.
|
| void * | set_contains (const SET_T *set, const void *val) |
| | Test whether a set contains a given value.
|
| void ** | set_values (const SET_T *set) |
| | Obtains all values currently in the set.
|
| SET_T * | set_dup (const SET_T *set) |
| | Create a deep copy of a set.
|
A simple set implementation, based on hash.h.
◆ set_add()
| void * set_add |
( |
SET_T * | set, |
|
|
const void * | val ) |
Add a value to a set.
If the set already contains the value, a pointer to the value in the set is returned.
- Parameters
-
| set | The set to which the value will be added. |
| val | The value to store. |
- Return values
-
| void * | If the value already exists in the set. |
| NULL | If the value did not already exist in the set. |
◆ set_contains()
| void * set_contains |
( |
const SET_T * | set, |
|
|
const void * | val ) |
Test whether a set contains a given value.
- Parameters
-
| set | The set to be searched for the value. |
| val | The value which is to be searched for. |
- Return values
-
| void * | The value, if found. |
| NULL | If the value was not found. |
◆ set_del()
| void * set_del |
( |
SET_T * | set, |
|
|
const void * | val ) |
Remove a value from the set.
- Parameters
-
| set | The set from which the value will be removed. |
| val | The value to be removed from the set. |
- Return values
-
| void * | The value which was removed. The caller should free this value. |
| NULL | If the value was not found. |
◆ set_dup()
Create a deep copy of a set.
set_free should be called on the pointer when no longer needed.
- Parameters
-
- Returns
- A copy of the set.
◆ set_free()
| void set_free |
( |
SET_T * | set | ) |
|
Frees memory (including values) associated with a set.
This function can free all memory associated with a set.
- Parameters
-
◆ set_new()
| SET_T * set_new |
( |
const unsigned long | slots | ) |
|
Create a new set with the given number of slots.
- Parameters
-
| slots | The number of slots available in the set. Values hash to a slot, and if a slot already contains a value which yields the same hash, it is chained to other entries in the bucket. |
- Return values
-
| SET_T * | Returns a pointer to a SET_T structure. |
| NULL | If the set cannot be created. |
◆ set_values()
| void ** set_values |
( |
const SET_T * | set | ) |
|
Obtains all values currently in the set.
- Parameters
-
| set | The set to be inspected. |
- Returns
- A NULL-terminated array of all values in the set. Call free() on the array when it is no longer required; values are pointers into the set and should not be freed.