The LevAWC Project
 All Data Structures Files Functions Variables Typedefs Enumerations Macros Pages
set.h
Go to the documentation of this file.
1 /*
2  * _____
3  * ANSI / ___/
4  * / /__
5  * \___/
6  *
7  * Filename: set.h
8  * Author : Kyle Loudon/Dan Levin
9  * Date : Mon Apr 08 12:29:13 2013
10  * Version : 0.51
11  * ---
12  * Description: A pure, generic set ADT - written in ANSI C
13  *
14  * Revision history - coming up below:
15  *
16  * Date Revision message
17  * 130413 Created this file
18  * 150331 This code ready for version 0.51
19  *
20  */
25 #ifndef _SET_H_
26 #define _SET_H_
27 
28 #include <stdio.h>
29 #include <stdlib.h>
30 
31 #include "slist.h"
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
41 #define SET_FWD 1
42 
46 #define SET_BWD -1
47 
48  typedef Slist Set;
49 
50  /* FUNCTION DECLARATIONS */
51 
73  Set SETinit(int (*match)(const void *key1, const void *key2), void (*destroy)(void *data));
74 
89  void SETdestroy(Set set);
90 
102  int SETinsert(Set set, const void *data);
103 
128  int SETremove(Set set, void **data);
129 
143  Set SETunion(Set set1, Set set2);
144 
158  Set SETintersection(Set set1, Set set2);
159 
174  Set SETdifference(Set set1, Set set2);
175 
184  int SETis_member(Set set, const void *data);
185 
196  int SETis_subset(const Set set1, const Set set2);
197 
207  int SETis_equal(Set set1, Set set2);
208 
216  int SETsize(Set set);
217 
233  void SETsort(Set set, int (*cmp)(const void *key1, const void *key2));
234 
247  void SETtraverse(Set set, void (*callback)(const void *data), int direction);
248 
249 #ifdef __cplusplus
250 }
251 #endif
252 
253 #endif /* _SET_H_ */