]> andersk Git - splint.git/blame - test/db2/empset.c
Removed /bin/csh from tainted/Makefile
[splint.git] / test / db2 / empset.c
CommitLineData
885824d3 1# include "empset.h"
2
3static bool initDone = FALSE;
4
5eref _empset_get (employee e, erc s)
6{
7 erc_elements(s, er)
8 {
9 employee e1 = eref_get(er);
10 if (employee_equal(&e1, &e))
11 return er;
12 } end_erc_elements ;
13
14 return erefNIL;
15}
16
17void empset_clear (empset s)
18{
19 erc_clear (s);
20}
21
22bool /*@alt void@*/ empset_insert (empset s, employee e)
23{
24 if (!eref_equal (_empset_get (e, s), erefNIL))
25 {
26 return FALSE;
27 }
28
29 empset_insertUnique (s, e);
30 return TRUE;
31}
32
33void empset_insertUnique (empset s, employee e)
34{
35 eref er;
36
37 er = ereftab_lookup (e, known);
38
39 if (eref_equal (er, erefNIL))
40 {
41 er = eref_alloc ( );
42 eref_assign (er,e);
43 ereftab_insert (known, e, er);
44 }
45
46 erc_insert (s, er);
47}
48
49bool /*@alt void@*/ empset_delete (empset s, employee e)
50{
51 eref er;
52
53 er = _empset_get (e, s);
54
55 if (eref_equal (er, erefNIL))
56 {
57 return FALSE;
58 }
59 return erc_delete (s, er);
60}
61
62empset empset_disjointUnion (empset s1, empset s2)
63{
64 erc result;
65 empset tmp;
66
67 result = erc_create ( );
68
69 if (erc_size (s1) > erc_size (s2))
70 {
71 tmp = s1;
72 s1 = s2;
73 s2 = tmp;
74 }
75
76 erc_join (result, s1);
77
78 empset_elements(s2, emp)
79 {
80 empset_insertUnique(result, emp);
81 } end_empset_elements ;
82
83 return result;
84}
85
86empset empset_union (empset s1, empset s2)
87{
88 erc result;
89 empset tmp;
90
91 result = erc_create ();
92
93 if (erc_size (s1) > erc_size (s2))
94 {
95 tmp = s1;
96 s1 = s2;
97 s2 = tmp;
98 }
99 erc_join (result, s2);
100
101 empset_elements (s1, emp)
102 {
103 if (!empset_member(emp, s2))
104 empset_insert(result, emp);
105 } end_empset_elements ;
106
107 return result;
108}
109
110void empset_intersect (empset s1, empset s2)
111{
112 erc toDelete = erc_create();
113
114 empset_elements (s2, emp)
115 {
116 if (!empset_member(emp, s2))
117 empset_insert(toDelete, emp);
118 } end_empset_elements ;
119
120 empset_elements (toDelete, emp)
121 {
122 empset_delete(s1, emp);
123 } end_empset_elements;
124
125 erc_final (toDelete);
126}
127
128bool empset_subset (empset s1, empset s2)
129{
130 empset_elements(s1, emp)
131 {
132 if (!empset_member(emp, s2)) return FALSE;
133 } end_empset_elements ;
134
135 return TRUE;
136}
137
138void empset_initMod (void)
139{
140 if (initDone) return;
141
142 bool_initMod ();
143 employee_initMod ();
144 eref_initMod ();
145 erc_initMod ();
146 ereftab_initMod ();
147 known = ereftab_create ();
148 initDone = TRUE;
149}
This page took 0.277729 seconds and 5 git commands to generate.