]> andersk Git - splint.git/blob - src/Headers/constraintExpr.h
Changes to fix malloc size problem.
[splint.git] / src / Headers / constraintExpr.h
1 #ifndef __constraintExpr_h__
2
3 #define __constraintExpr_h__
4
5 typedef enum
6 {
7   binaryexpr,
8   unaryExpr,
9   term
10 } constraintExprKind;
11
12 struct s_constraintExpr {
13   constraintExprKind kind;
14   bool ct; /*changed type */
15   ctype origType;
16   constraintExprData data;
17 };
18
19
20
21 /*@constant null constraintExpr constraintExpr_undefined; @*/
22 # define constraintExpr_undefined ((constraintExpr)NULL)
23
24 extern /*@falsewhennull@*/ bool constraintExpr_isDefined (constraintExpr p_e) /*@*/ ;
25 extern /*@unused@*/ /*@nullwhentrue@*/ bool constraintExpr_isUndefined (constraintExpr p_e) /*@*/ ;
26 extern /*@unused@*/ /*@nullwhentrue@*/ bool constraintExpr_isError (constraintExpr p_e) /*@*/ ;
27
28 # define constraintExpr_isDefined(e)        ((e) != constraintExpr_undefined)
29 # define constraintExpr_isUndefined(e)      ((e) == constraintExpr_undefined)
30 # define constraintExpr_isError(e)          ((e) == constraintExpr_undefined)
31
32
33 void constraintExpr_free ( /*@only@*/ constraintExpr p_expr);
34
35 constraintExpr constraintExpr_setFileloc (/*@returned@*/ constraintExpr p_c, fileloc p_loc) /*@modifies p_c@*/;
36
37 constraintExpr constraintExpr_copy (constraintExpr p_expr) /*@*/;
38
39 /*@only@*/ cstring constraintExpr_unparse (/*@temp@*/ /*@observer@*/ constraintExpr p_ex) /*@*/;
40 extern cstring constraintExpr_print (constraintExpr p_expr) /*@*/;
41
42
43 bool constraintExpr_similar (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
44 bool constraintExpr_same (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
45 /*@only@*/ constraintExpr constraintExpr_searchandreplace (/*@only@*/ /*@unique@*/ constraintExpr p_c, /*@temp@*/ /*@observer@*/ constraintExpr p_old, /*@temp@*/ /*@observer@*/ constraintExpr p_newExpr ) /*@modifies p_c@*/;
46
47 bool constraintExpr_canGetValue (constraintExpr p_expr) /*@*/;
48 long constraintExpr_getValue (constraintExpr p_expr) /*@*/;
49
50 int constraintExpr_compare (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
51
52 /* constraintExpr constraintExpr_makeValueInt (int i); */
53
54 /*@only@*/ /*@notnull@*/constraintExpr constraintExpr_makeIntLiteral (long p_i);
55
56 /*@only@*/ constraintExpr constraintExpr_makeValueExpr (/*@exposed@*/ exprNode p_expr);
57
58 /*@only@*/ constraintExpr constraintExpr_makeMaxSetExpr (/*@exposed@*/ exprNode p_expr);
59
60 /*@only@*/ constraintExpr  constraintExpr_makeMaxReadExpr (/*@exposed@*/ exprNode p_expr);
61
62 /*@only@*/ constraintExpr constraintExpr_makeIncConstraintExpr (/*@only@*/ constraintExpr p_expr);
63
64 /*@only@*/ constraintExpr constraintExpr_makeDecConstraintExpr (/*@only@*/ constraintExpr p_expr);
65
66 /*@only@*/ constraintExpr constraintExpr_simplify (/*@only@*/ constraintExpr p_c);
67
68 /*@only@*/ constraintExpr constraintExpr_solveBinaryExpr (constraintExpr p_lexpr, /*@only@*/ constraintExpr p_expr) /*@modifies p_lexpr, p_expr @*/;
69
70 bool constraintExpr_search (/*@observer@*/ /*@temp@*/ constraintExpr p_c, /*@observer@*/ /*@temp@*/ constraintExpr p_old);
71
72 /*@only@*/ fileloc constraintExpr_loc (constraintExpr p_expr);
73
74
75 /*@only@*/ constraintExpr constraintExpr_makeSRefMaxset ( /*@temp@*/ /*@observer@*/ sRef p_s);
76
77 /*@only@*/ constraintExpr constraintExpr_makeSRefMaxRead(/*@temp@*/ /*@observer@*/ sRef p_s);
78
79 /*@only@*/ constraintExpr constraintExpr_makeTermsRef (/*@temp@*/ sRef  p_s);
80
81 constraintExpr constraintExpr_doSRefFixBaseParam ( /*@returned@*/ constraintExpr p_expr, exprNodeList p_arglist);
82
83 /*@only@*/ constraintExpr constraintExpr_makeExprNode (/*@dependent@*/  exprNode p_e);
84
85 /*@only@*/ constraintExpr constraintExpr_doFixResult (/*@only@*/  constraintExpr p_expr, /*@observer@*/ exprNode p_fcnCall);
86
87 /*@falsewhennull@*/ bool constraintExpr_isLit (constraintExpr p_expr) /*@*/ ;
88
89 /*@only@*/ constraintExpr constraintExpr_makeAddExpr (/*@only@*/ constraintExpr p_expr, /*@only@*/ constraintExpr p_addent);
90
91 /*@only@*/  constraintExpr constraintExpr_makeSubtractExpr (/*@only@*/ constraintExpr p_expr, /*@only@*/ constraintExpr p_addent);
92
93 /*@only@*/ constraintExpr constraintExpr_parseMakeUnaryOp (lltok p_op,/*@only@*/ constraintExpr p_cexpr);
94
95 constraintExpr constraintExpr_parseMakeBinaryOp (/*@only@*/ constraintExpr p_expr1, lltok p_op, /*@only@*/ constraintExpr p_expr2);
96
97 bool constraintExpr_hasMaxSet (/*@observer@*/ /*@temp@*/ constraintExpr p_expr);
98
99
100
101 /*@only@*/ constraintExpr constraintExpr_doSRefFixConstraintParam (/*@returned@*/ /*@only@*/ constraintExpr p_expr, exprNodeList p_arglist) /*@modifies p_expr@*/;
102
103 /*@only@*/
104 constraintExpr constraintExpr_propagateConstants (/*@only@*/ constraintExpr p_expr,
105                                                 /*@out@*/ bool * p_propagate,
106                                                   /*@out@*/ int *p_literal);
107
108 /*@falsewhennull@*/ bool constraintExpr_isBinaryExpr (/*@observer@*/ /*@temp@*/ constraintExpr p_c) /*@*/ ;
109
110 extern void  constraintExpr_dump (/*@observer@*/ /*@temp@*/ constraintExpr p_expr,  FILE *p_f);
111
112 extern /*@only@*/ constraintExpr  constraintExpr_undump (FILE *p_f);
113
114 extern /*@only@*/ constraintExpr constraintExpr_makeTermExprNode (/*@exposed@*/ exprNode p_e) ;
115
116 /* drl added 8/8/001*/
117 bool constraintExpr_isTerm (/*@observer@*/ /*@temp@*/ constraintExpr p_c);
118
119 /* drl added 8/8/001*/
120 /*@observer@*/ /*@temp@*/ constraintTerm constraintExpr_getTerm ( /*@temp@*/ /*@observer@*/ constraintExpr p_c);
121
122 /* drl added 8/8/001*/
123 int constraintExpr_getDepth (/*@observer@*/ /*@temp@*/ constraintExpr p_ex);
124
125
126 /*drl 1/6/2001: I didn't think these functions were solid enough to include in the   stable  release of splint.*/
127 /* drl added 12/30/001*/
128 /* extern / *@only@* / constraintExpr constraintExpr_doSRefFixInvarConstraint (/ *@only@* / constraintExpr p_expr, sRef p_s, ctype p_ct); */
129
130
131
132 /*drl added 12/19 */
133 bool  constraintExpr_isConstantOnly ( constraintExpr p_e );
134
135 #else
136 # error "Multiple include"
137 #endif
This page took 0.05961 seconds and 5 git commands to generate.