]>
Commit | Line | Data |
---|---|---|
d1eb43aa | 1 | #ifndef __constraintExpr_h__ |
2 | ||
3 | #define __constraintExpr_h__ | |
4 | ||
d1eb43aa | 5 | typedef enum |
6 | { | |
7 | binaryexpr, | |
8 | unaryExpr, | |
90bc41f7 | 9 | term |
d1eb43aa | 10 | } |
11 | constraintExprKind; | |
12 | ||
a8e557d3 | 13 | struct _constraintExpr { |
6e88de2d | 14 | constraintExprKind kind; |
15 | constraintExprData data; | |
16 | }; | |
d1eb43aa | 17 | |
18 | ||
6e88de2d | 19 | /*@constant null constraintExpr constraintExpr_undefined; @*/ |
20 | # define constraintExpr_undefined ((constraintExpr)NULL) | |
d1eb43aa | 21 | |
6e88de2d | 22 | extern /*@falsenull@*/ bool constraintExpr_isDefined (constraintExpr p_e) /*@*/ ; |
23 | extern /*@unused@*/ /*@truenull@*/ bool constraintExpr_isUndefined (constraintExpr p_e) /*@*/ ; | |
84c9ffbf | 24 | extern /*@unused@*/ /*@truenull@*/ bool constraintExpr_isError (constraintExpr p_e) /*@*/ ; |
d1eb43aa | 25 | |
6e88de2d | 26 | # define constraintExpr_isDefined(e) ((e) != constraintExpr_undefined) |
27 | # define constraintExpr_isUndefined(e) ((e) == constraintExpr_undefined) | |
28 | # define constraintExpr_isError(e) ((e) == constraintExpr_undefined) | |
d1eb43aa | 29 | |
30 | ||
d1eb43aa | 31 | |
dc92450f | 32 | int constraintExpr_getValue (constraintExpr expr) /*@*/; |
d1eb43aa | 33 | |
6e88de2d | 34 | constraintExpr constraintExpr_setFileloc (constraintExpr expr, fileloc loc) /*@modifies expr@*/; |
d1eb43aa | 35 | |
6e88de2d | 36 | constraintExpr constraintExpr_copy (constraintExpr expr) /*@*/; |
d1eb43aa | 37 | |
dc92450f | 38 | cstring constraintExpr_unparse (constraintExpr ex) /*@*/; |
39 | extern cstring constraintExpr_print (constraintExpr expr) /*@*/; | |
d1eb43aa | 40 | |
41 | ||
6e88de2d | 42 | bool constraintExpr_similar (constraintExpr expr1, constraintExpr expr2) /*@*/; |
43 | bool constraintExpr_same (constraintExpr expr1, constraintExpr expr2) /*@*/; | |
44 | constraintExpr constraintExpr_searchandreplace (constraintExpr c, constraintExpr old, constraintExpr new ) /*@modifies c@*/; | |
45 | bool constraintExpr_canGetValue (constraintExpr expr) /*@*/; | |
d1eb43aa | 46 | |
6e88de2d | 47 | int constraintExpr_compare (constraintExpr expr1, constraintExpr expr2) /*@*/; |
d1eb43aa | 48 | |
6e88de2d | 49 | //constraintExpr constraintExpr_makeValueInt (int i); |
d1eb43aa | 50 | |
51 | constraintExpr constraintExpr_makeIntLiteral (int i); | |
52 | ||
53 | constraintExpr constraintExpr_makeValueExpr (exprNode expr); | |
54 | ||
55 | constraintExpr constraintExpr_makeMaxSetExpr (exprNode expr); | |
56 | ||
57 | constraintExpr constraintExpr_makeMaxReadExpr (exprNode expr); | |
58 | ||
d1eb43aa | 59 | constraintExpr constraintExpr_makeIncConstraintExpr (constraintExpr expr); |
60 | ||
61 | constraintExpr constraintExpr_makeDecConstraintExpr (constraintExpr expr); | |
62 | ||
6e88de2d | 63 | constraintExpr constraintExpr_simplify (constraintExpr c) /*@modifies c@*/; |
d1eb43aa | 64 | |
6e88de2d | 65 | constraintExpr constraintExpr_solveBinaryExpr (constraintExpr lexpr, constraintExpr expr) /*@modifies lexpr@*/; |
d1eb43aa | 66 | |
6e88de2d | 67 | bool constraintExpr_search (constraintExpr c, constraintExpr old) /*@*/; |
d1eb43aa | 68 | |
d1eb43aa | 69 | fileloc constraintExpr_getFileloc (constraintExpr expr); |
70 | ||
71 | constraintExpr constraintExpr_makeBinaryOpConstraintExprIntLiteral (constraintExpr expr, int literal); | |
72 | ||
73 | constraintExpr constraintExpr_makeSRefMaxset (sRef s); | |
74 | ||
75 | constraintExpr constraintExpr_makeTermsRef (sRef s); | |
76 | constraintExpr constraintExpr_doSRefFixBaseParam ( /*@returned@*/ constraintExpr expr, exprNodeList arglist); | |
77 | constraintExpr constraintExpr_makeExprNode (exprNode e); | |
d1eb43aa | 78 | |
79 | constraintExpr constraintExpr_doFixResult (/*@returned@*/ constraintExpr expr, exprNode fcnCall); | |
80 | bool constraintExpr_isLit (constraintExpr expr); | |
81 | constraintExpr constraintExpr_makeAddConstraintExpr (constraintExpr expr, constraintExpr add); | |
82 | ||
83 | constraintExpr constraintExpr_parseMakeUnaryOp (lltok op, constraintExpr cexpr); | |
84 | ||
85 | constraintExpr constraintExpr_parseMakeBinaryOp (constraintExpr expr1, lltok op, constraintExpr expr2); | |
86 | ||
87 | bool constraintExpr_hasMaxSet (constraintExpr expr); | |
88 | ||
6e88de2d | 89 | //static constraintExpr constraintExpr_propagateConstants (constraintExpr expr, |
90 | // /*@out@*/ bool * propagate, | |
91 | // /*@out@*/ int *literal); | |
470b7798 | 92 | |
90bc41f7 | 93 | constraintExpr constraintExpr_makeSRefMaxRead(sRef s); |
94 | ||
6e88de2d | 95 | constraintTerm constraintTerm_doSRefFixBaseParam (constraintTerm term, exprNodeList arglist) /*@modifies term@*/; |
96 | ||
97 | constraintExpr | |
a8e557d3 | 98 | constraintExpr_doSRefFixConstraintParam (/*@returned@*/ constraintExpr e, exprNodeList arglist) /*@modifies e@*/; |
6e88de2d | 99 | |
100 | ||
101 | #else | |
102 | ||
103 | # error "Multiple include" | |
104 | ||
d1eb43aa | 105 | #endif |