1 #ifndef __constraintExpr_h__
3 #define __constraintExpr_h__
13 struct _constraintExpr {
14 constraintExprKind kind;
15 constraintExprData data;
20 /*@constant null constraintExpr constraintExpr_undefined; @*/
21 # define constraintExpr_undefined ((constraintExpr)NULL)
23 extern /*@falsenull@*/ bool constraintExpr_isDefined (constraintExpr p_e) /*@*/ ;
24 extern /*@unused@*/ /*@truenull@*/ bool constraintExpr_isUndefined (constraintExpr p_e) /*@*/ ;
25 extern /*@unused@*/ /*@truenull@*/ bool constraintExpr_isError (constraintExpr p_e) /*@*/ ;
27 # define constraintExpr_isDefined(e) ((e) != constraintExpr_undefined)
28 # define constraintExpr_isUndefined(e) ((e) == constraintExpr_undefined)
29 # define constraintExpr_isError(e) ((e) == constraintExpr_undefined)
32 void constraintExpr_free ( /*@only@*/ constraintExpr expr);
34 int constraintExpr_getValue (constraintExpr expr) /*@*/;
36 constraintExpr constraintExpr_setFileloc (/*@returned@*/ constraintExpr c, fileloc loc) /*@modifies c@*/;
38 constraintExpr constraintExpr_copy (constraintExpr expr) /*@*/;
40 /*@only@*/ cstring constraintExpr_unparse (/*@temp@*/ /*@observer@*/ constraintExpr ex) /*@*/;
41 extern cstring constraintExpr_print (constraintExpr expr) /*@*/;
44 bool constraintExpr_similar (constraintExpr expr1, constraintExpr expr2) /*@*/;
45 bool constraintExpr_same (constraintExpr expr1, constraintExpr expr2) /*@*/;
46 /*@only@*/ constraintExpr constraintExpr_searchandreplace (/*@only@*/ /*@unique@*/ constraintExpr c, /*@observer@*/ constraintExpr old, /*@observer@*/ constraintExpr new ) /*@modifies c@*/;
47 bool constraintExpr_canGetValue (constraintExpr expr) /*@*/;
49 int constraintExpr_compare (constraintExpr expr1, constraintExpr expr2) /*@*/;
51 //constraintExpr constraintExpr_makeValueInt (int i);
53 /*@only@*/ constraintExpr constraintExpr_makeIntLiteral (int i);
55 /*@only@*/ constraintExpr constraintExpr_makeValueExpr (/*@exposed@*/ exprNode expr);
57 /*@only@*/ constraintExpr constraintExpr_makeMaxSetExpr (/*@exposed@*/ exprNode expr);
59 /*@only@*/ constraintExpr constraintExpr_makeMaxReadExpr (/*@exposed@*/ exprNode expr);
61 /*@only@*/ constraintExpr constraintExpr_makeIncConstraintExpr (/*@only@*/ constraintExpr expr);
63 /*@only@*/ constraintExpr constraintExpr_makeDecConstraintExpr (/*@only@*/ constraintExpr expr);
65 /*@only@*/ constraintExpr constraintExpr_simplify (/*@only@*/ constraintExpr c);
67 /*@only@*/ constraintExpr constraintExpr_solveBinaryExpr (constraintExpr lexpr, /*@only@*/ constraintExpr expr) /*@modifies lexpr, expr @*/;
69 bool constraintExpr_search (/*@observer@*/ constraintExpr c, /*@observer@*/ constraintExpr old);
71 /*@only@*/ fileloc constraintExpr_getFileloc (constraintExpr expr);
74 /*@only@*/ constraintExpr constraintExpr_makeSRefMaxset ( /*@exposed@*/ sRef s);
76 /*@only@*/ constraintExpr constraintExpr_makeTermsRef (/*@exposed@*/ sRef s);
78 constraintExpr constraintExpr_doSRefFixBaseParam ( /*@returned@*/ constraintExpr expr, exprNodeList arglist);
80 /*@only@*/ constraintExpr constraintExpr_makeExprNode (/*@exposed@*/ exprNode e);
82 /*@only@*/ constraintExpr constraintExpr_doFixResult (/*@only@*/ constraintExpr expr, /*@exposed@*/ exprNode fcnCall);
84 bool constraintExpr_isLit (constraintExpr expr);
86 /*@only@*/ constraintExpr constraintExpr_makeAddConstraintExpr (/*@only@*/constraintExpr expr, /*@only@*/ constraintExpr add);
88 /*@only@*/ constraintExpr constraintExpr_parseMakeUnaryOp (lltok op,/*@only@*/ constraintExpr cexpr);
90 constraintExpr constraintExpr_parseMakeBinaryOp (/*@only@*/ constraintExpr expr1, lltok op, /*@only@*/ constraintExpr expr2);
92 bool constraintExpr_hasMaxSet (/*@observer@*/ constraintExpr expr);
95 /*@only@*/ constraintExpr constraintExpr_makeSRefMaxRead(/*@exposed@*/ sRef s);
97 /*@only@*/ constraintExpr constraintExpr_doSRefFixConstraintParam (/*@returned@*/ /*@only@*/ constraintExpr expr, exprNodeList arglist) /*@modifies expr@*/;
100 constraintExpr constraintExpr_propagateConstants (/*@only@*/ constraintExpr expr,
101 /*@out@*/ bool * propagate,
102 /*@out@*/ int *literal);
104 bool constraintExpr_isBinaryExpr (/*@observer@*/ constraintExpr c);
107 # error "Multiple include"