]> andersk Git - splint.git/blob - src/constraintExprData.c
645b77220fe0c915e4619642bd8243f18a4221ad
[splint.git] / src / constraintExprData.c
1 #/*
2 ** constraintExprData.c
3 */
4
5 # include "lclintMacros.nf"
6 # include "basic.h"
7 # include "cgrammar.h"
8 # include "cgrammar_tokens.h"
9
10 # include "exprChecks.h"
11 # include "exprNodeSList.h"
12
13 static /*@out@*/ constraintExprData constraintExprData_alloc (void)
14 {
15   constraintExprData ret;
16
17   ret = dmalloc (sizeof (*ret) );
18
19   return ret;
20 }
21
22 static /*@out@*/ constraintExprData constraintExprData_allocBinaryOp (void)
23 {
24   constraintExprData ret;
25
26   ret = constraintExprData_alloc();
27
28   ret->binaryOp.expr1 = constraintExpr_undefined;
29   ret->binaryOp.expr2 = constraintExpr_undefined;
30
31   return ret;
32 }
33
34 static /*@out@*/ constraintExprData constraintExprData_allocUnaryOp (void)
35 {
36   constraintExprData ret;
37
38   ret = constraintExprData_alloc();
39
40   ret->unaryOp.expr = constraintExpr_undefined;
41
42   return ret;
43 }
44
45 static /*@out@*/ constraintExprData constraintExprData_allocTerm (void)
46 {
47   constraintExprData ret;
48
49   ret = constraintExprData_alloc();
50
51   ret->term = NULL;
52   return ret;
53 }
54
55
56 void constraintExprData_freeBinaryExpr (/*@only@*/constraintExprData data)
57 {
58   constraintExpr_free (data->binaryOp.expr1);
59   constraintExpr_free (data->binaryOp.expr2);
60   free(data);  
61 }
62
63 constraintExprData constraintExprData_copyBinaryExpr(/*@observer@*/ constraintExprData data)
64 {
65   constraintExprData ret;
66   llassert(constraintExprData_isDefined(data));
67
68   ret = constraintExprData_allocBinaryOp();
69   
70   ret->binaryOp.binaryOp = data->binaryOp.binaryOp;
71   ret->binaryOp.expr1 = constraintExpr_copy (data->binaryOp.expr1);
72   ret->binaryOp.expr2 = constraintExpr_copy (data->binaryOp.expr2);
73   return ret;
74 }
75
76 void constraintExprData_freeUnaryExpr (/*@only@*/constraintExprData data)
77 {
78   constraintExpr_free (data->unaryOp.expr);
79   free(data);  
80 }
81
82 constraintExprData constraintExprData_copyUnaryExpr(/*@observer@*/ constraintExprData data)
83 {
84  constraintExprData ret;
85   llassert(constraintExprData_isDefined(data));
86
87   ret = constraintExprData_allocUnaryOp();
88   
89   ret->unaryOp.unaryOp = data->unaryOp.unaryOp;
90   ret->unaryOp.expr = constraintExpr_copy (data->unaryOp.expr);
91   
92   return ret;
93 }
94
95 void constraintExprData_freeTerm (/*@only@*/constraintExprData data)
96 {
97   constraintTerm_free (data->term);
98   free(data);  
99 }
100
101
102 constraintExprData constraintExprData_copyTerm (/*@observer@*/ constraintExprData data)
103 {
104  constraintExprData ret;
105   llassert(constraintExprData_isDefined(data));
106
107   ret = constraintExprData_allocTerm();
108
109   ret->term = constraintTerm_copy (data->term);
110   return ret;
111 }
112
113 // constraintExprData constraintExprData_copy (constraintExprData data, constraintExprKind kind)
114 // {
115 //   constraintExprData ret;
116 //   llassert(constraintExprData_isDefined(data));
117 //   ret = dmalloc (sizeof (*ret) );
118 //   switch (kind)
119 //     {
120 //     case binaryexpr:
121 //       ret->binaryOp.binaryOp = data->binaryOp.binaryOp;
122 //       ret->binaryOp.expr1 = constraintExpr_copy (data->binaryOp.expr1);
123 //       ret->binaryOp.expr2 = constraintExpr_copy (data->binaryOp.expr2);
124 //       break;
125 //     case unaryExpr:
126 //       ret->unaryOp.unaryOp = data->unaryOp.unaryOp;
127 //       ret->unaryOp.expr = constraintExpr_copy (data->unaryOp.expr);
128 //       break;
129 //     case term:
130 //       ret->term = constraintTerm_copy (data->term);
131 //     }
132   
133 //   return ret;
134 // }
135
136  constraintExprData constraintExprData_termSetTerm (/*@returned@*/  constraintExprData data,  /*@only@*/constraintTerm term)
137 {
138   llassert (constraintExprData_isDefined(data));
139
140   if (constraintTerm_isDefined(data->term) )
141     constraintTerm_free(data->term);
142
143   data->term = term;
144   return data;
145 }
146
147
148
149 /*@observer@*/ constraintTerm constraintExprData_termGetTerm (/*@observer@*/ constraintExprData data)
150 {
151   llassert (constraintExprData_isDefined(data));
152   /*@i22*/return data->term;
153 }
154
155
156 constraintExprUnaryOpKind constraintExprData_unaryExprGetOp (/*@observer@*/ constraintExprData data)
157 {
158   llassert (constraintExprData_isDefined(data));
159   return (data->unaryOp.unaryOp);
160 }
161
162
163 constraintExpr  constraintExprData_unaryExprGetExpr (/*@observer@*/ constraintExprData data)
164 {
165   llassert (constraintExprData_isDefined (data));
166   return (data->unaryOp.expr);
167 }
168
169
170
171 constraintExprData constraintExprData_unaryExprSetOp ( /*@returned@*/ constraintExprData data, constraintExprUnaryOpKind op)
172 {
173   llassert (constraintExprData_isDefined (data));
174   
175   data->unaryOp.unaryOp = op;
176   return data;
177 }
178
179 constraintExprData  constraintExprData_unaryExprSetExpr (constraintExprData data, /*@only@*/ constraintExpr expr)
180 {
181   llassert (constraintExprData_isDefined(data));
182
183   if (constraintExpr_isDefined(data->unaryOp.expr) )
184     constraintExpr_free(data->unaryOp.expr);
185   
186   data->unaryOp.expr = expr;
187   return data;
188 }
189
190 // binaryExpr stuff
191
192
193 constraintExprBinaryOpKind  constraintExprData_binaryExprGetOp (constraintExprData data)
194 {
195   llassert (constraintExprData_isDefined(data));
196   
197   return (data->binaryOp.binaryOp);
198 }
199
200
201 constraintExpr  constraintExprData_binaryExprGetExpr1 (constraintExprData data)
202 {
203   llassert (constraintExprData_isDefined(data));
204
205
206   return (data->binaryOp.expr1);
207 }
208
209
210 constraintExpr  constraintExprData_binaryExprGetExpr2 (constraintExprData data)
211 {
212   llassert (constraintExprData_isDefined(data));
213   /*@i22*/ return (data->binaryOp.expr2);
214 }
215
216
217 constraintExprData  constraintExprData_binaryExprSetExpr1 (  /*@returned@*/ constraintExprData data, /*@only@*/ constraintExpr expr)
218 {
219   llassert (constraintExprData_isDefined(data));
220
221   if (constraintExpr_isDefined(data->binaryOp.expr1) )
222     constraintExpr_free(data->binaryOp.expr1);
223   
224   data->binaryOp.expr1 = expr;
225   return data;
226 }
227
228 constraintExprData  constraintExprData_binaryExprSetExpr2 (constraintExprData data, constraintExpr expr) 
229 {
230   llassert (constraintExprData_isDefined(data));
231   if (constraintExpr_isDefined(data->binaryOp.expr2) )
232     constraintExpr_free(data->binaryOp.expr2);
233
234   data->binaryOp.expr2 = expr;
235   return data;
236 }
237
238
239 constraintExprData  constraintExprData_binaryExprSetOp (constraintExprData data, constraintExprBinaryOpKind op)
240 {
241   llassert (constraintExprData_isDefined(data));
242   data->binaryOp.binaryOp = op;
243   return data;
244 }
245
This page took 0.061128 seconds and 3 git commands to generate.