]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/CodeTools/Source/Pccts/support/set/set.h
More renames for Tool Packages
[mirror_edk2.git] / Tools / CodeTools / Source / Pccts / support / set / set.h
CommitLineData
878ddf1f 1#ifndef __GATE_SET_H\r
2#define __GATE_SET_H\r
3\r
4/* set.h\r
5\r
6 The following is a general-purpose set library originally developed\r
7 by Hank Dietz and enhanced by Terence Parr to allow dynamic sets.\r
8 \r
9 Sets are now structs containing the #words in the set and\r
10 a pointer to the actual set words.\r
11\r
12 1987 by Hank Dietz\r
13 \r
14 Modified by:\r
15 Terence Parr\r
16 Purdue University\r
17 October 1989\r
18\r
19 Added ANSI prototyping Dec. 1992 -- TJP\r
20*/\r
21\r
22#include "pcctscfg.h"\r
23\r
24#ifdef NOT_USED /* SEE config.h */\r
25/* Define usable bits per unsigned int word */\r
26#ifdef PC\r
27#define WORDSIZE 16\r
28#define LogWordSize 4\r
29#else\r
30#define WORDSIZE 32\r
31#define LogWordSize 5\r
32#endif\r
33#define BytesPerWord sizeof(unsigned)\r
34#endif\r
35\r
36#define SETSIZE(a) ((a).n<<LogWordSize) /* Maximum items per set */\r
37#define MODWORD(x) ((x) & (WORDSIZE-1)) /* x % WORDSIZE */\r
38#define DIVWORD(x) ((x) >> LogWordSize) /* x / WORDSIZE */\r
39#define nil (~((unsigned) 0)) /* An impossible set member all bits on (big!) */\r
40\r
41typedef struct _set {\r
42 unsigned int n; /* Number of words in set */\r
43 unsigned *setword;\r
44 } set;\r
45\r
46#define set_init {0, NULL}\r
47#define set_null(a) ((a).setword==NULL)\r
48\r
49#define NumBytes(x) (((x)>>3)+1) /* Num bytes to hold x */\r
50#define NumWords(x) ((((unsigned)(x))>>LogWordSize)+1) /* Num words to hold x */\r
51\r
52\r
53/* M a c r o s */\r
54\r
55/* make arg1 a set big enough to hold max elem # of arg2 */\r
56#define set_new(a,_max) \\r
57if (((a).setword=(unsigned *)calloc(NumWords(_max),BytesPerWord))==NULL) \\r
58 fprintf(stderr, "set_new: Cannot allocate set with max of %d\n", _max); \\r
59 (a).n = NumWords(_max);\r
60\r
61#define set_free(a) \\r
62 {if ( (a).setword != NULL ) free((char *)((a).setword)); \\r
63 (a) = empty;}\r
64\r
65#ifdef __USE_PROTOS\r
66extern void set_size( unsigned );\r
67extern unsigned int set_deg( set );\r
68extern set set_or( set, set );\r
69extern set set_and( set, set );\r
70extern set set_dif( set, set );\r
71extern set set_of( unsigned );\r
72extern void set_ext( set *, unsigned int );\r
73extern set set_not( set );\r
74extern int set_equ( set, set );\r
75extern int set_sub( set, set );\r
76extern unsigned set_int( set );\r
77extern int set_el( unsigned, set );\r
78extern int set_nil( set );\r
79extern char * set_str( set );\r
80extern set set_val( register char * );\r
81extern void set_orel( unsigned, set * );\r
82extern void set_orin( set *, set );\r
83extern void set_andin( set *, set );\r
84extern void set_rm( unsigned, set );\r
85extern void set_clr( set );\r
86extern set set_dup( set );\r
87extern void set_PDQ( set, register unsigned * );\r
88extern unsigned *set_pdq( set );\r
89extern void _set_pdq( set a, register unsigned *q );\r
90extern unsigned int set_hash( set, register unsigned int );\r
91#else\r
92extern void set_size();\r
93extern unsigned int set_deg();\r
94extern set set_or();\r
95extern set set_and();\r
96extern set set_dif();\r
97extern set set_of();\r
98extern void set_ext();\r
99extern set set_not();\r
100extern int set_equ();\r
101extern int set_sub();\r
102extern unsigned set_int();\r
103extern int set_el();\r
104extern int set_nil();\r
105extern char * set_str();\r
106extern set set_val();\r
107extern void set_orel();\r
108extern void set_orin();\r
109extern void set_andin();\r
110extern void set_rm();\r
111extern void set_clr();\r
112extern set set_dup();\r
113extern void set_PDQ();\r
114extern unsigned *set_pdq();\r
115extern void _set_pdq();\r
116extern unsigned int set_hash();\r
117#endif\r
118\r
119extern set empty;\r
120\r
121#endif\r