]> andersk Git - splint.git/blame - src/Headers/constraintExpr.h
Added support for or constraints.
[splint.git] / src / Headers / constraintExpr.h
CommitLineData
d1eb43aa 1#ifndef __constraintExpr_h__
2
3#define __constraintExpr_h__
4
5typedef union constraintTermValue_
6{
7 exprNode expr;
8 sRef sref;
9 int intlit;
10} constraintTermValue;
11
12typedef enum
13{
90bc41f7 14 ERRORBADCONSTRAINTTERMTYPE,
d1eb43aa 15 EXPRNODE, SREF,
16 INTLITERAL
17} constraintTermType;
18
19struct _constraintTerm {
20 fileloc loc;
21 constraintTermValue value;
22 constraintTermType kind;
23};
24
25
26typedef enum
27{
28 PLUS,
29 MINUS
30}
31constraintExprBinaryOpKind;
32
33typedef enum
34{
35 VALUE, CALLSAFE,
36 MAXSET, MINSET, MAXREAD, MINREAD,
37 NULLTERMINATED,
38 UNDEFINED
39}
40constraintExprUnaryOpKind;
41
42typedef enum
43{
44 binaryexpr,
45 unaryExpr,
90bc41f7 46 term
d1eb43aa 47}
48constraintExprKind;
49
50typedef struct constraintExprBinaryOp_
51{
52 constraintExpr expr1;
53 constraintExprBinaryOpKind binaryOp;
54 constraintExpr expr2;
55} constraintExprBinaryOp;
56
57
58typedef struct constraintExprUnaryOp_
59{
60 constraintExpr expr;
61 constraintExprUnaryOpKind unaryOp;
62} constraintExprUnaryOp;
63
64
65typedef union constraintExprData_
66{
67 constraintExprBinaryOp binaryOp;
68 constraintExprUnaryOp unaryOp;
69 constraintTerm term;
70} *constraintExprData;
71
72
73struct constraintExpr_ {
74 constraintExprKind kind;
75 constraintExprData data;
76};
77
78# define constraintExpr_undefined ((constraintExpr)NULL)
79
80//constraintTerm constraintTerm_copy (constraintTerm term);
81
dc92450f 82int constraintExpr_getValue (constraintExpr expr) /*@*/;
d1eb43aa 83
84constraintExpr constraintExpr_setFileloc (constraintExpr expr, fileloc loc);
85
86constraintExpr constraintExpr_copy (constraintExpr expr);
87
dc92450f 88cstring constraintExpr_unparse (constraintExpr ex) /*@*/;
89extern cstring constraintExpr_print (constraintExpr expr) /*@*/;
d1eb43aa 90
91
92bool constraintExpr_similar (constraintExpr expr1, constraintExpr expr2);
93bool constraintExpr_same (constraintExpr expr1, constraintExpr expr2);
94constraintExpr constraintExpr_searchandreplace (constraintExpr c, constraintExpr old, constraintExpr new );
95bool constraintExpr_canGetValue (constraintExpr expr);
96
97int constraintExpr_compare (constraintExpr expr1, constraintExpr expr2);
98
99constraintExpr constraintExpr_makeValueInt (int i);
100
101constraintExpr constraintExpr_makeIntLiteral (int i);
102
103constraintExpr constraintExpr_makeValueExpr (exprNode expr);
104
105constraintExpr constraintExpr_makeMaxSetExpr (exprNode expr);
106
107constraintExpr constraintExpr_makeMaxReadExpr (exprNode expr);
108
109constraintExpr constraintExpr_makeMinSetExpr (exprNode expr);
110
111constraintExpr constraintExpr_makeMinReadExpr (exprNode expr);
112
113constraintExpr constraintExpr_makeIncConstraintExpr (constraintExpr expr);
114
115constraintExpr constraintExpr_makeDecConstraintExpr (constraintExpr expr);
116
117constraintExpr constraintExpr_simplify (constraintExpr c);
118
119
120constraintExpr constraintExpr_solveBinaryExpr (constraintExpr lexpr, constraintExpr expr);
121
122bool constraintExpr_search (constraintExpr c, constraintExpr old);
123/* jjjkkkk */
124
125constraintExprData constraintExprData_copy (constraintExprData data, constraintExprKind kind);
126
127
128constraintExprData constraintExprData_termSetTerm (/*@out@*/ constraintExprData data, constraintTerm term);
129
130constraintTerm constraintExprData_termGetTerm (constraintExprData data) /*@*/;
131
132constraintExprUnaryOpKind constraintExprData_unaryExprGetOp (constraintExprData data) /*@*/;
133
134constraintExpr constraintExprData_unaryExprGetExpr (constraintExprData data) /*@*/;
135
136constraintExprData constraintExprData_unaryExprSetOp (constraintExprData data, constraintExprUnaryOpKind op);
137
138
139constraintExprData constraintExprData_unaryExprSetExpr (constraintExprData data, constraintExpr expr);
140
141
470b7798 142constraintExprBinaryOpKind constraintExprData_binaryExprGetOp (constraintExprData data) /*@*/;
d1eb43aa 143
144constraintExpr constraintExprData_binaryExprGetExpr1 (constraintExprData data)/*@*/;
145
146constraintExpr constraintExprData_binaryExprGetExpr2 (constraintExprData data)/*@*/;
147
148constraintExprData constraintExprData_binaryExprSetExpr1 (constraintExprData data, constraintExpr expr);
149
150constraintExprData constraintExprData_binaryExprSetExpr2 (constraintExprData data, constraintExpr expr);
151
152constraintExprData constraintExprData_binaryExprSetOp (constraintExprData data, constraintExprBinaryOpKind op);
153fileloc constraintExpr_getFileloc (constraintExpr expr);
154
155constraintExpr constraintExpr_makeBinaryOpConstraintExprIntLiteral (constraintExpr expr, int literal);
156
157constraintExpr constraintExpr_makeSRefMaxset (sRef s);
158
159constraintExpr constraintExpr_makeTermsRef (sRef s);
160constraintExpr constraintExpr_doSRefFixBaseParam ( /*@returned@*/ constraintExpr expr, exprNodeList arglist);
161constraintExpr constraintExpr_makeExprNode (exprNode e);
162constraintExpr constraintExpr_doSRefFixConstraintParam (/*@returned@*/ constraintExpr expr, exprNodeList arglist);
163
164constraintExpr constraintExpr_doFixResult (/*@returned@*/ constraintExpr expr, exprNode fcnCall);
165bool constraintExpr_isLit (constraintExpr expr);
166constraintExpr constraintExpr_makeAddConstraintExpr (constraintExpr expr, constraintExpr add);
167
168constraintExpr constraintExpr_parseMakeUnaryOp (lltok op, constraintExpr cexpr);
169
170constraintExpr constraintExpr_parseMakeBinaryOp (constraintExpr expr1, lltok op, constraintExpr expr2);
171
172bool constraintExpr_hasMaxSet (constraintExpr expr);
173
470b7798 174constraintExpr constraintExpr_propagateConstants (constraintExpr expr,
175 /*@out@*/ bool * propagate,
176 /*@out@*/ int *literal);
177
90bc41f7 178constraintExpr constraintExpr_makeSRefMaxRead(sRef s);
179
d1eb43aa 180#endif
This page took 0.068784 seconds and 5 git commands to generate.