]>
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 | ||
b7b694d6 | 113 | constraintExprData constraintExprData_termSetTerm (/*@returned@*/ constraintExprData data, /*@only@*/constraintTerm term) |
3aaedf88 | 114 | { |
c3e695ff | 115 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 116 | |
117 | if (constraintTerm_isDefined(data->term) ) | |
118 | constraintTerm_free(data->term); | |
119 | ||
d46ce6a4 | 120 | data->term = term; |
3aaedf88 | 121 | return data; |
122 | } | |
123 | ||
124 | ||
125 | ||
d46ce6a4 | 126 | /*@observer@*/ constraintTerm constraintExprData_termGetTerm (/*@observer@*/ constraintExprData data) |
3aaedf88 | 127 | { |
c3e695ff | 128 | llassert (constraintExprData_isDefined(data)); |
a8e557d3 | 129 | /*@i22*/return data->term; |
3aaedf88 | 130 | } |
131 | ||
132 | ||
4ab867d6 | 133 | constraintExprUnaryOpKind constraintExprData_unaryExprGetOp (/*@observer@*/ constraintExprData data) |
3aaedf88 | 134 | { |
c3e695ff | 135 | llassert (constraintExprData_isDefined(data)); |
3aaedf88 | 136 | return (data->unaryOp.unaryOp); |
137 | } | |
138 | ||
139 | ||
4ab867d6 | 140 | constraintExpr constraintExprData_unaryExprGetExpr (/*@observer@*/ constraintExprData data) |
3aaedf88 | 141 | { |
60eced23 | 142 | llassert (constraintExprData_isDefined (data)); |
a779b61e | 143 | return (data->unaryOp.expr); |
3aaedf88 | 144 | } |
145 | ||
146 | ||
147 | ||
60eced23 | 148 | constraintExprData constraintExprData_unaryExprSetOp ( /*@returned@*/ constraintExprData data, constraintExprUnaryOpKind op) |
3aaedf88 | 149 | { |
60eced23 | 150 | llassert (constraintExprData_isDefined (data)); |
151 | ||
3aaedf88 | 152 | data->unaryOp.unaryOp = op; |
153 | return data; | |
154 | } | |
155 | ||
d46ce6a4 | 156 | constraintExprData constraintExprData_unaryExprSetExpr (constraintExprData data, /*@only@*/ constraintExpr expr) |
3aaedf88 | 157 | { |
c3e695ff | 158 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 159 | |
160 | if (constraintExpr_isDefined(data->unaryOp.expr) ) | |
161 | constraintExpr_free(data->unaryOp.expr); | |
162 | ||
d46ce6a4 | 163 | data->unaryOp.expr = expr; |
3aaedf88 | 164 | return data; |
165 | } | |
166 | ||
b7b694d6 | 167 | /* |
168 | ** binaryExpr stuff | |
169 | */ | |
3aaedf88 | 170 | |
171 | constraintExprBinaryOpKind constraintExprData_binaryExprGetOp (constraintExprData data) | |
172 | { | |
c3e695ff | 173 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 174 | |
3aaedf88 | 175 | return (data->binaryOp.binaryOp); |
176 | } | |
177 | ||
178 | ||
179 | constraintExpr constraintExprData_binaryExprGetExpr1 (constraintExprData data) | |
180 | { | |
c3e695ff | 181 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 182 | |
183 | ||
184 | return (data->binaryOp.expr1); | |
3aaedf88 | 185 | } |
186 | ||
187 | ||
188 | constraintExpr constraintExprData_binaryExprGetExpr2 (constraintExprData data) | |
189 | { | |
c3e695ff | 190 | llassert (constraintExprData_isDefined(data)); |
a8e557d3 | 191 | /*@i22*/ return (data->binaryOp.expr2); |
3aaedf88 | 192 | } |
193 | ||
194 | ||
28bf4b0b | 195 | constraintExprData constraintExprData_binaryExprSetExpr1 ( /*@returned@*/ constraintExprData data, /*@only@*/ constraintExpr expr) |
3aaedf88 | 196 | { |
c3e695ff | 197 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 198 | |
199 | if (constraintExpr_isDefined(data->binaryOp.expr1) ) | |
200 | constraintExpr_free(data->binaryOp.expr1); | |
201 | ||
d46ce6a4 | 202 | data->binaryOp.expr1 = expr; |
3aaedf88 | 203 | return data; |
204 | } | |
205 | ||
28bf4b0b | 206 | constraintExprData constraintExprData_binaryExprSetExpr2 (constraintExprData data, constraintExpr expr) |
3aaedf88 | 207 | { |
c3e695ff | 208 | llassert (constraintExprData_isDefined(data)); |
a779b61e | 209 | if (constraintExpr_isDefined(data->binaryOp.expr2) ) |
210 | constraintExpr_free(data->binaryOp.expr2); | |
211 | ||
d46ce6a4 | 212 | data->binaryOp.expr2 = expr; |
3aaedf88 | 213 | return data; |
214 | } | |
215 | ||
216 | ||
28bf4b0b | 217 | constraintExprData constraintExprData_binaryExprSetOp (constraintExprData data, constraintExprBinaryOpKind op) |
3aaedf88 | 218 | { |
c3e695ff | 219 | llassert (constraintExprData_isDefined(data)); |
3aaedf88 | 220 | data->binaryOp.binaryOp = op; |
221 | return data; | |
222 | } | |
a779b61e | 223 |