]>
Commit | Line | Data |
---|---|---|
3aaedf88 | 1 | #/* |
a8e557d3 | 2 | ** constraintExprData.c |
3aaedf88 | 3 | */ |
4 | ||
3aaedf88 | 5 | # include "lclintMacros.nf" |
6 | # include "basic.h" | |
7 | # include "cgrammar.h" | |
8 | # include "cgrammar_tokens.h" | |
9 | ||
10 | # include "exprChecks.h" | |
3aaedf88 | 11 | # include "exprNodeSList.h" |
3aaedf88 | 12 | |
a779b61e | 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 | ||
d46ce6a4 | 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 | ||
4ab867d6 | 63 | constraintExprData constraintExprData_copyBinaryExpr(/*@observer@*/ constraintExprData data) |
c3e695ff | 64 | { |
4ab867d6 | 65 | constraintExprData ret; |
c3e695ff | 66 | llassert(constraintExprData_isDefined(data)); |
a779b61e | 67 | |
68 | ret = constraintExprData_allocBinaryOp(); | |
69 | ||
c3e695ff | 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 | } | |
3aaedf88 | 75 | |
2934b455 | 76 | void constraintExprData_freeUnaryExpr (/*@only@*/constraintExprData data) |
d46ce6a4 | 77 | { |
78 | constraintExpr_free (data->unaryOp.expr); | |
79 | free(data); | |
80 | } | |
81 | ||
4ab867d6 | 82 | constraintExprData constraintExprData_copyUnaryExpr(/*@observer@*/ constraintExprData data) |
3aaedf88 | 83 | { |
c3e695ff | 84 | constraintExprData ret; |
85 | llassert(constraintExprData_isDefined(data)); | |
a779b61e | 86 | |
87 | ret = constraintExprData_allocUnaryOp(); | |
c3e695ff | 88 | |
89 | ret->unaryOp.unaryOp = data->unaryOp.unaryOp; | |
90 | ret->unaryOp.expr = constraintExpr_copy (data->unaryOp.expr); | |
3aaedf88 | 91 | |
92 | return ret; | |
93 | } | |
94 | ||
d46ce6a4 | 95 | void constraintExprData_freeTerm (/*@only@*/constraintExprData data) |
96 | { | |
97 | constraintTerm_free (data->term); | |
98 | free(data); | |
99 | } | |
100 | ||
101 | ||
4ab867d6 | 102 | constraintExprData constraintExprData_copyTerm (/*@observer@*/ constraintExprData data) |
c3e695ff | 103 | { |
104 | constraintExprData ret; | |
105 | llassert(constraintExprData_isDefined(data)); | |
a779b61e | 106 | |
107 | ret = constraintExprData_allocTerm(); | |
108 | ||
c3e695ff | 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 | ||
28bf4b0b | 136 | constraintExprData constraintExprData_termSetTerm (/*@returned@*/ constraintExprData data, /*@only@*/constraintTerm term) |
3aaedf88 | 137 | { |
c3e695ff | 138 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 139 | |
140 | if (constraintTerm_isDefined(data->term) ) | |
141 | constraintTerm_free(data->term); | |
142 | ||
d46ce6a4 | 143 | data->term = term; |
3aaedf88 | 144 | return data; |
145 | } | |
146 | ||
147 | ||
148 | ||
d46ce6a4 | 149 | /*@observer@*/ constraintTerm constraintExprData_termGetTerm (/*@observer@*/ constraintExprData data) |
3aaedf88 | 150 | { |
c3e695ff | 151 | llassert (constraintExprData_isDefined(data)); |
a8e557d3 | 152 | /*@i22*/return data->term; |
3aaedf88 | 153 | } |
154 | ||
155 | ||
4ab867d6 | 156 | constraintExprUnaryOpKind constraintExprData_unaryExprGetOp (/*@observer@*/ constraintExprData data) |
3aaedf88 | 157 | { |
c3e695ff | 158 | llassert (constraintExprData_isDefined(data)); |
3aaedf88 | 159 | return (data->unaryOp.unaryOp); |
160 | } | |
161 | ||
162 | ||
4ab867d6 | 163 | constraintExpr constraintExprData_unaryExprGetExpr (/*@observer@*/ constraintExprData data) |
3aaedf88 | 164 | { |
60eced23 | 165 | llassert (constraintExprData_isDefined (data)); |
a779b61e | 166 | return (data->unaryOp.expr); |
3aaedf88 | 167 | } |
168 | ||
169 | ||
170 | ||
60eced23 | 171 | constraintExprData constraintExprData_unaryExprSetOp ( /*@returned@*/ constraintExprData data, constraintExprUnaryOpKind op) |
3aaedf88 | 172 | { |
60eced23 | 173 | llassert (constraintExprData_isDefined (data)); |
174 | ||
3aaedf88 | 175 | data->unaryOp.unaryOp = op; |
176 | return data; | |
177 | } | |
178 | ||
d46ce6a4 | 179 | constraintExprData constraintExprData_unaryExprSetExpr (constraintExprData data, /*@only@*/ constraintExpr expr) |
3aaedf88 | 180 | { |
c3e695ff | 181 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 182 | |
183 | if (constraintExpr_isDefined(data->unaryOp.expr) ) | |
184 | constraintExpr_free(data->unaryOp.expr); | |
185 | ||
d46ce6a4 | 186 | data->unaryOp.expr = expr; |
3aaedf88 | 187 | return data; |
188 | } | |
189 | ||
190 | // binaryExpr stuff | |
191 | ||
192 | ||
193 | constraintExprBinaryOpKind constraintExprData_binaryExprGetOp (constraintExprData data) | |
194 | { | |
c3e695ff | 195 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 196 | |
3aaedf88 | 197 | return (data->binaryOp.binaryOp); |
198 | } | |
199 | ||
200 | ||
201 | constraintExpr constraintExprData_binaryExprGetExpr1 (constraintExprData data) | |
202 | { | |
c3e695ff | 203 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 204 | |
205 | ||
206 | return (data->binaryOp.expr1); | |
3aaedf88 | 207 | } |
208 | ||
209 | ||
210 | constraintExpr constraintExprData_binaryExprGetExpr2 (constraintExprData data) | |
211 | { | |
c3e695ff | 212 | llassert (constraintExprData_isDefined(data)); |
a8e557d3 | 213 | /*@i22*/ return (data->binaryOp.expr2); |
3aaedf88 | 214 | } |
215 | ||
216 | ||
28bf4b0b | 217 | constraintExprData constraintExprData_binaryExprSetExpr1 ( /*@returned@*/ constraintExprData data, /*@only@*/ constraintExpr expr) |
3aaedf88 | 218 | { |
c3e695ff | 219 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 220 | |
221 | if (constraintExpr_isDefined(data->binaryOp.expr1) ) | |
222 | constraintExpr_free(data->binaryOp.expr1); | |
223 | ||
d46ce6a4 | 224 | data->binaryOp.expr1 = expr; |
3aaedf88 | 225 | return data; |
226 | } | |
227 | ||
28bf4b0b | 228 | constraintExprData constraintExprData_binaryExprSetExpr2 (constraintExprData data, constraintExpr expr) |
3aaedf88 | 229 | { |
c3e695ff | 230 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 231 | if (constraintExpr_isDefined(data->binaryOp.expr2) ) |
232 | constraintExpr_free(data->binaryOp.expr2); | |
233 | ||
d46ce6a4 | 234 | data->binaryOp.expr2 = expr; |
3aaedf88 | 235 | return data; |
236 | } | |
237 | ||
238 | ||
28bf4b0b | 239 | constraintExprData constraintExprData_binaryExprSetOp (constraintExprData data, constraintExprBinaryOpKind op) |
3aaedf88 | 240 | { |
c3e695ff | 241 | llassert (constraintExprData_isDefined(data)); |
3aaedf88 | 242 | data->binaryOp.binaryOp = op; |
243 | return data; | |
244 | } | |
a779b61e | 245 |