home *** CD-ROM | disk | FTP | other *** search
- /* sets.h
-
- A set is an array of char large enough to carry the maximum
- elements N. An element is an int in the range 0..N-1.
- set_union: set1 = set2 | set3
- intersection: set1 = set2 * set3
-
- */
-
- #ifndef SETS_H
- #define SETS_H
-
- #include "protos.h"
-
- #ifndef va_start
- # include <stdarg.h>
- #endif
-
- /* "size" is maximum number of elements N; SETSIZE returns bytes
- in set array */
- #define SETSIZE(size) ((size-1)/8 + 1)
-
- extern void clearset _XX_((char *set, int setbytes));
-
- /* fillset should be followed by a TRIMSET call */
- extern void fillset _XX_((char *set, int setbytes));
- extern int set_member _XX_((const int element, char *set));
- extern int set_size _XX_((char *set, int setbytes));
- extern int empty_set _XX_((char *set, int setbytes));
- extern void set_union _XX_((char *set1, char *set2,
- char *set3, int setbytes));
- extern void set_merge _XX_((char *set1, char *set2, int setbytes));
- extern void intersection _XX_((char *set1, char *set2,
- char *set3, int setbytes));
- extern int is_intersection _XX_((char *set1, char *set2, int setbytes));
-
- /* both sets should be trimmed BEFORE calling this */
- extern int set_equal _XX_((char *set1, char *set2, int setbytes));
- extern void set_include _XX_((int element, char *set));
- extern void set_exclude _XX_((int element, char *set));
- extern int set_greater _XX_((char *set1, char *set2, int setbytes));
- extern void set_difference _XX_((char *set1, char *set2,
- char *set3, int setbytes));
-
- /* set_inverse should be followed by a TRIMSET call! */
- extern void set_inverse _XX_((char *set, int setbytes));
- extern void trimset _XX_((char *set1, int setbits));
- extern void set_incl _XX_((char *set, ...));
- extern void set_excl _XX_((char *set, ...));
-
- #endif
-