]> andersk Git - splint.git/blame - test/db1/erc.c
noexpand always false.
[splint.git] / test / db1 / erc.c
CommitLineData
885824d3 1# include <stdlib.h>
2# include "erc.h"
3
4erc erc_create (void)
5{
6 erc c;
7
8 c = (erc) malloc (sizeof (ercInfo));
9
10 if (c == 0)
11 {
12 printf ("Malloc returned null in erc_create\n");
13 exit (1);
14 }
15
16 c->vals = 0;
17 c->size = 0;
18 return c;
19}
20
80ee600a 21void erc_clear (erc c) /*@ensures isnull c->vals, c->elem@*/
885824d3 22{
23 ercList elem;
24 ercList next;
25
26 for (elem = c->vals; elem != 0; elem = next)
27 {
80ee600a 28 next = elem->next; elem->next = NULL;
885824d3 29 free (elem);
30 }
31
32 c->vals = 0;
33 c->size = 0;
34}
35
36void erc_final (erc c)
37{
38 erc_clear (c);
39 free (c);
40}
41
42bool erc_member (eref er, erc c)
43{
44 ercList tmpc;
45
46 for (tmpc = c->vals; tmpc != 0; tmpc = tmpc->next)
47 if (tmpc->val == er) return TRUE;
48
49 return FALSE;
50}
51
52void erc_insert (erc c, eref er)
53{
54 ercList newElem;
55 newElem = (ercElem *) malloc (sizeof (ercElem));
56
57 if (newElem == 0)
58 {
59 printf ("Malloc returned null in erc_insert\n");
60 exit (1);
61 }
62
63 newElem->val = er;
64 newElem->next = c->vals;
65 c->vals = newElem;
66 c->size++;
67}
68
69bool erc_delete (erc c, eref er)
70{
71 ercList elem;
72 ercList prev;
73
74 for (prev = 0, elem = c->vals;
75 elem != 0;
76 prev = elem, elem = elem->next)
77 {
78 if (elem->val == er)
79 {
80ee600a 80 if (prev == 0) {
81 c->vals = elem->next; elem->next = 0;
82 } else {
83 prev->next = elem->next; elem->next = 0;
84 }
885824d3 85 free (elem);
86 c->size--;
87 return TRUE;
88 }
89 }
90
91 return FALSE;
92}
93
94ercIter erc_iterStart (erc c)
95{
96 ercIter result;
97
98 result = (ercIter) malloc (sizeof (ercList));
99
100 if (result == 0)
101 {
102 printf ("Malloc returned null in erc_iterStart\n");
103 exit (1);
104 }
105
106 *result = c->vals;
107 return result;
108}
109
110eref erc_yield (ercIter it)
111{
112 eref result;
113
114 if (*it == 0)
115 {
116 return erefNIL;
117 free (it);
118 }
119
120 result = (*it)->val;
121 *(it) = (*it)->next;
122 return result;
123}
124
125void erc_join (erc c1, erc c2)
126{
127 ercList tmpc;
128
129 for (tmpc = c2->vals; tmpc != 0; tmpc = tmpc->next)
130 erc_insert (c1, tmpc->val);
131}
132
133char *erc_sprint (erc c)
134{
135 int len;
136 eref er;
137 ercIter it;
138 char *result;
139
140 result = (char *)
141 malloc (erc_size (c) * (employeePrintSize + 1) + 1);
142
143 if (result == 0)
144 {
145 printf ("Malloc returned null in erc_sprint\n");
146 exit (1);
147 }
148
149 len = 0;
150
151 for_ercElems (er, it, c)
152 {
153 employee_sprint (&(result[len]), eref_get (er));
154 len += employeePrintSize;
155 result[len++] = '\n';
156 }
157
158 result[len] = '\0';
159 return result;
160}
161
This page took 0.082172 seconds and 5 git commands to generate.