Arbitrary objects that are equal (the same location in memory) appear only once in the set. For example, as a set of filenames:
struct set *s; s = set_create(0);
set_push(s,pathname); set_push(s,pathname_b); set_push(s,pathname);
assert(set_size(s) == 2);
path = set_pop(s);
assert(set_size(s) == 1);
To list all of the elements in a set, use set_first_element and set_next_element like this:
void *element;
set_first_element(s); while(element = set_next_element(s)) { printf("set contains: %x\n", element); }
#include "int_sizes.h"
Go to the source code of this file.
Functions | |
set * | set_create (int buckets) |
Create a new set. | |
void | set_clear (struct set *s) |
Remove all entries from a set. | |
void | set_delete (struct set *s) |
Delete a set. | |
int | set_size (struct set *s) |
Count the entries in a set. | |
int | set_insert (struct set *s, const void *element) |
Insert a element to the set. | |
int | set_push (struct set *h, const void *element) |
Insert a element to the set. | |
int | set_lookup (struct set *s, void *element) |
Look up a element in the set. | |
int | set_remove (struct set *s, const void *element) |
Remove an element. | |
void * | set_pop (struct set *s) |
Remove an arbitrary element from the set. | |
void | set_first_element (struct set *s) |
Begin iteration over all the elements. | |
void * | set_next_element (struct set *s) |
Continue iteration over all elements. |
struct set* set_create | ( | int | buckets | ) |
Create a new set.
buckets | The number of elements in the set. If zero, a default element will be used. Increases dynamically as needed. |
void set_clear | ( | struct set * | s | ) |
Remove all entries from a set.
Note that this function will not free all of the objects contained within the set.
s | The set to delete. |
void set_delete | ( | struct set * | s | ) |
Delete a set.
Note that this function will not free all of the objects contained within the set.
s | The set to delete. |
int set_size | ( | struct set * | s | ) |
Count the entries in a set.
s | A pointer to a set. |
int set_insert | ( | struct set * | s, | |
const void * | element | |||
) |
Insert a element to the set.
This call will return 0 if element was already in the set. You must call set_remove to remove it. Also note that you cannot insert a null element into the set.
s | A pointer to a set. | |
element | A pointer to store. |
int set_push | ( | struct set * | h, | |
const void * | element | |||
) |
Insert a element to the set.
This is equivalent to set_insert
int set_lookup | ( | struct set * | s, | |
void * | element | |||
) |
Look up a element in the set.
s | A pointer to a set. | |
element | A pointer to search for. |
int set_remove | ( | struct set * | s, | |
const void * | element | |||
) |
Remove an element.
s | A pointer to a set. | |
element | A pointer to remove. |
void* set_pop | ( | struct set * | s | ) |
Remove an arbitrary element from the set.
s | A pointer to a set. |
void set_first_element | ( | struct set * | s | ) |
Begin iteration over all the elements.
This function begins a new iteration over a set, allowing you to visit every element in the set. Next, invoke set_next_element to retrieve each element in order.
s | A pointer to a set. |
void* set_next_element | ( | struct set * | s | ) |
Continue iteration over all elements.
This function returns the next element in the iteration.
s | A pointer to a set. |