cctools
set.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2022 The University of Notre Dame
3 This software is distributed under the GNU General Public License.
4 See the file COPYING for details.
5 */
6 
7 #ifndef SET_H
8 #define SET_H
9 
10 #include "int_sizes.h"
11 #include "list.h"
12 
44 #define SET_ITERATE( set, element ) set_first_element(set); while((element = set_next_element(set)))
45 
46 #define SET_ITERATE_RANDOM_START( set, offset_bookkeep, element ) set_random_element(set, &offset_bookkeep); while((element = set_next_element_with_offset(set, offset_bookkeep)))
47 
53 struct set *set_create(int buckets);
54 
61 struct set *set_duplicate(struct set *s);
62 
70 struct set *set_union(struct set *s1, struct set *s2);
71 
77 void set_clear(struct set *s);
78 
84 void set_delete(struct set *s);
85 
91 int set_size(struct set *s);
92 
102 int set_insert(struct set *s, const void *element);
103 
113 int set_insert_set(struct set *s, struct set *s2);
114 
124 int set_insert_list(struct set *s, struct list *l);
125 
130 int set_push(struct set *h, const void *element);
131 
138 int set_lookup(struct set *s, void *element);
139 
146 int set_remove(struct set *s, const void *element);
147 
152 void *set_pop(struct set *s);
153 
161 void set_first_element(struct set *s);
162 
169 void *set_next_element(struct set *s);
170 
179 void set_random_element(struct set *s, int *offset_bookkeep);
180 
187 void *set_next_element_with_offset(struct set *s, int offset_bookkeep);
188 
194 void **set_values(struct set *s);
195 
196 #endif
set_values
void ** set_values(struct set *s)
A set_size(s) array of the current elements in the set in a random order.
set_duplicate
struct set * set_duplicate(struct set *s)
Duplicate a set from an existing set.
set_next_element
void * set_next_element(struct set *s)
Continue iteration over all elements.
set_union
struct set * set_union(struct set *s1, struct set *s2)
Unions two sets into one set.
set_insert_set
int set_insert_set(struct set *s, struct set *s2)
Insert an existing set into the set.
set_next_element_with_offset
void * set_next_element_with_offset(struct set *s, int offset_bookkeep)
Continue iteration over all elements from an arbitray offset.
set_size
int set_size(struct set *s)
Count the entries in a set.
set_create
struct set * set_create(int buckets)
Create a new set.
set_first_element
void set_first_element(struct set *s)
Begin iteration over all the elements.
set_pop
void * set_pop(struct set *s)
Remove an arbitrary element from the set.
set_insert
int set_insert(struct set *s, const void *element)
Insert an element to the set.
set_push
int set_push(struct set *h, const void *element)
Insert an element to the set.
set_random_element
void set_random_element(struct set *s, int *offset_bookkeep)
Begin iteration over all elements from a random offset.
set_clear
void set_clear(struct set *s)
Remove all entries from a set.
set_lookup
int set_lookup(struct set *s, void *element)
Look up a element in the set.
set_insert_list
int set_insert_list(struct set *s, struct list *l)
Insert an existing list into the set.
list.h
set_delete
void set_delete(struct set *s)
Delete a set.
set_remove
int set_remove(struct set *s, const void *element)
Remove an element.