]> andersk Git - splint.git/blame - src/constraintExprData.c
*** empty log message ***
[splint.git] / src / constraintExprData.c
CommitLineData
65f973be 1/*
11db3170 2** Splint - annotation-assisted static program checker
c59f5181 3** Copyright (C) 1994-2003 University of Virginia,
65f973be 4** Massachusetts Institute of Technology
5**
6** This program is free software; you can redistribute it and/or modify it
7** under the terms of the GNU General Public License as published by the
8** Free Software Foundation; either version 2 of the License, or (at your
9** option) any later version.
10**
11** This program is distributed in the hope that it will be useful, but
12** WITHOUT ANY WARRANTY; without even the implied warranty of
13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14** General Public License for more details.
15**
16** The GNU General Public License is available from http://www.gnu.org/ or
17** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
18** MA 02111-1307, USA.
19**
155af98d 20** For information on splint: info@splint.org
21** To report a bug: splint-bug@splint.org
11db3170 22** For more information: http://www.splint.org
65f973be 23*/
24
25/*
a8e557d3 26** constraintExprData.c
3aaedf88 27*/
28
1b8ae690 29# include "splintMacros.nf"
3aaedf88 30# include "basic.h"
31# include "cgrammar.h"
32# include "cgrammar_tokens.h"
33
34# include "exprChecks.h"
3aaedf88 35# include "exprNodeSList.h"
3aaedf88 36
a779b61e 37static /*@out@*/ constraintExprData constraintExprData_alloc (void)
38{
39 constraintExprData ret;
40
41 ret = dmalloc (sizeof (*ret) );
42
43 return ret;
44}
45
46static /*@out@*/ constraintExprData constraintExprData_allocBinaryOp (void)
47{
48 constraintExprData ret;
49
50 ret = constraintExprData_alloc();
51
52 ret->binaryOp.expr1 = constraintExpr_undefined;
53 ret->binaryOp.expr2 = constraintExpr_undefined;
54
55 return ret;
56}
57
58static /*@out@*/ constraintExprData constraintExprData_allocUnaryOp (void)
59{
60 constraintExprData ret;
61
62 ret = constraintExprData_alloc();
63
64 ret->unaryOp.expr = constraintExpr_undefined;
65
66 return ret;
67}
68
69static /*@out@*/ constraintExprData constraintExprData_allocTerm (void)
70{
71 constraintExprData ret;
72
73 ret = constraintExprData_alloc();
74
75 ret->term = NULL;
76 return ret;
77}
78
79
d46ce6a4 80void constraintExprData_freeBinaryExpr (/*@only@*/constraintExprData data)
81{
82 constraintExpr_free (data->binaryOp.expr1);
83 constraintExpr_free (data->binaryOp.expr2);
84 free(data);
85}
86
4ab867d6 87constraintExprData constraintExprData_copyBinaryExpr(/*@observer@*/ constraintExprData data)
c3e695ff 88{
4ab867d6 89 constraintExprData ret;
c3e695ff 90 llassert(constraintExprData_isDefined(data));
a779b61e 91
92 ret = constraintExprData_allocBinaryOp();
93
c3e695ff 94 ret->binaryOp.binaryOp = data->binaryOp.binaryOp;
95 ret->binaryOp.expr1 = constraintExpr_copy (data->binaryOp.expr1);
96 ret->binaryOp.expr2 = constraintExpr_copy (data->binaryOp.expr2);
97 return ret;
98}
3aaedf88 99
2934b455 100void constraintExprData_freeUnaryExpr (/*@only@*/constraintExprData data)
d46ce6a4 101{
102 constraintExpr_free (data->unaryOp.expr);
103 free(data);
104}
105
4ab867d6 106constraintExprData constraintExprData_copyUnaryExpr(/*@observer@*/ constraintExprData data)
3aaedf88 107{
c3e695ff 108 constraintExprData ret;
109 llassert(constraintExprData_isDefined(data));
a779b61e 110
111 ret = constraintExprData_allocUnaryOp();
c3e695ff 112
113 ret->unaryOp.unaryOp = data->unaryOp.unaryOp;
114 ret->unaryOp.expr = constraintExpr_copy (data->unaryOp.expr);
3aaedf88 115
116 return ret;
117}
118
d46ce6a4 119void constraintExprData_freeTerm (/*@only@*/constraintExprData data)
120{
121 constraintTerm_free (data->term);
122 free(data);
123}
124
125
4ab867d6 126constraintExprData constraintExprData_copyTerm (/*@observer@*/ constraintExprData data)
c3e695ff 127{
128 constraintExprData ret;
129 llassert(constraintExprData_isDefined(data));
a779b61e 130
131 ret = constraintExprData_allocTerm();
132
c3e695ff 133 ret->term = constraintTerm_copy (data->term);
134 return ret;
135}
136
9a48d98c 137constraintExprData
138constraintExprData_termSetTerm (/*@returned@*/ constraintExprData data,
139 /*@only@*/ constraintTerm term)
3aaedf88 140{
9a48d98c 141 llassert (constraintExprData_isDefined (data));
a779b61e 142
9a48d98c 143 if (constraintTerm_isDefined (data->term))
144 {
145 constraintTerm_free (data->term);
146 }
a779b61e 147
d46ce6a4 148 data->term = term;
3aaedf88 149 return data;
150}
151
152
153
9a48d98c 154/*@observer@*/ constraintTerm
155constraintExprData_termGetTerm (/*@observer@*/ constraintExprData data)
3aaedf88 156{
9a48d98c 157 llassert (constraintExprData_isDefined (data));
332e22fa 158 /*@i22*/
159 return data->term;
3aaedf88 160}
161
162
9a48d98c 163constraintExprUnaryOpKind
164constraintExprData_unaryExprGetOp (/*@observer@*/ constraintExprData data)
3aaedf88 165{
9a48d98c 166 llassert (constraintExprData_isDefined (data));
3aaedf88 167 return (data->unaryOp.unaryOp);
168}
169
170
9a48d98c 171constraintExpr
172constraintExprData_unaryExprGetExpr (/*@observer@*/ constraintExprData data)
3aaedf88 173{
60eced23 174 llassert (constraintExprData_isDefined (data));
a779b61e 175 return (data->unaryOp.expr);
3aaedf88 176}
177
9a48d98c 178constraintExprData
179constraintExprData_unaryExprSetOp (/*@returned@*/ constraintExprData data,
180 constraintExprUnaryOpKind op)
3aaedf88 181{
60eced23 182 llassert (constraintExprData_isDefined (data));
3aaedf88 183 data->unaryOp.unaryOp = op;
184 return data;
185}
186
9a48d98c 187constraintExprData
188constraintExprData_unaryExprSetExpr (constraintExprData data,
189 /*@only@*/ constraintExpr expr)
3aaedf88 190{
9a48d98c 191 llassert (constraintExprData_isDefined (data));
192
193 if (constraintExpr_isDefined (data->unaryOp.expr))
194 {
195 constraintExpr_free (data->unaryOp.expr);
196 }
a779b61e 197
d46ce6a4 198 data->unaryOp.expr = expr;
3aaedf88 199 return data;
200}
201
b7b694d6 202/*
203** binaryExpr stuff
204*/
3aaedf88 205
9a48d98c 206constraintExprBinaryOpKind constraintExprData_binaryExprGetOp (constraintExprData data)
3aaedf88 207{
9a48d98c 208 llassert (constraintExprData_isDefined (data));
3aaedf88 209 return (data->binaryOp.binaryOp);
210}
211
9a48d98c 212constraintExpr constraintExprData_binaryExprGetExpr1 (constraintExprData data)
3aaedf88 213{
9a48d98c 214 llassert (constraintExprData_isDefined (data));
a779b61e 215 return (data->binaryOp.expr1);
3aaedf88 216}
217
9a48d98c 218constraintExpr constraintExprData_binaryExprGetExpr2 (constraintExprData data)
3aaedf88 219{
c3e695ff 220 llassert (constraintExprData_isDefined(data));
332e22fa 221 /*@i22*/
222 return (data->binaryOp.expr2);
3aaedf88 223}
224
9a48d98c 225constraintExprData
226constraintExprData_binaryExprSetExpr1 (/*@returned@*/ constraintExprData data,
227 /*@only@*/ constraintExpr expr)
3aaedf88 228{
9a48d98c 229 llassert (constraintExprData_isDefined (data));
a779b61e 230
9a48d98c 231 if (constraintExpr_isDefined (data->binaryOp.expr1))
a779b61e 232 constraintExpr_free(data->binaryOp.expr1);
233
d46ce6a4 234 data->binaryOp.expr1 = expr;
3aaedf88 235 return data;
236}
237
9a48d98c 238constraintExprData
239constraintExprData_binaryExprSetExpr2 (constraintExprData data, constraintExpr expr)
3aaedf88 240{
9a48d98c 241 llassert (constraintExprData_isDefined (data));
a779b61e 242
9a48d98c 243 if (constraintExpr_isDefined (data->binaryOp.expr2))
244 constraintExpr_free (data->binaryOp.expr2);
245
d46ce6a4 246 data->binaryOp.expr2 = expr;
3aaedf88 247 return data;
248}
249
9a48d98c 250constraintExprData
251constraintExprData_binaryExprSetOp (constraintExprData data,
252 constraintExprBinaryOpKind op)
3aaedf88 253{
9a48d98c 254 llassert (constraintExprData_isDefined (data));
3aaedf88 255 data->binaryOp.binaryOp = op;
256 return data;
257}
a779b61e 258
This page took 0.097613 seconds and 5 git commands to generate.