Diffusion C API 6.11.5
Loading...
Searching...
No Matches
set.h File Reference

A simple set implementation, based on hash.h. More...

Data Structures

struct  set_entry_s
 This structure represents an entry in the set. More...
 
struct  set_s
 This represents a set. More...
 

Typedefs

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.
 

Functions

SET_Tset_new (const unsigned long slots)
 Create a new set with the given number of slots.
 
SET_Tset_new_string (const unsigned long slots)
 Create a new set which holds strings (pointers to char).
 
SET_Tset_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_Tset_dup (const SET_T *set)
 Create a deep copy of a set.
 

Detailed Description

A simple set implementation, based on hash.h.

Function Documentation

◆ 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
setThe set to which the value will be added.
valThe value to store.
Return values
void *If the value already exists in the set.
NULLIf 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
setThe set to be searched for the value.
valThe value which is to be searched for.
Return values
void *The value, if found.
NULLIf the value was not found.

◆ set_del()

void * set_del ( SET_T set,
const void *  val 
)

Remove a value from the set.

Parameters
setThe set from which the value will be removed.
valThe value to be removed from the set.
Return values
void *The value which was removed. The caller should free this value.
NULLIf the value was not found.

◆ set_dup()

SET_T * set_dup ( const SET_T set)

Create a deep copy of a set.

set_free should be called on the pointer when no longer needed.

Parameters
setThe set to copy.
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
setThe set to be freed.

◆ set_new()

SET_T * set_new ( const unsigned long  slots)

Create a new set with the given number of slots.

Parameters
slotsThe 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.
NULLIf the set cannot be created.

◆ set_values()

void ** set_values ( const SET_T set)

Obtains all values currently in the set.

Parameters
setThe 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.