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