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