1 #ifndef __constraintExpr_h__
3 #define __constraintExpr_h__
13 struct s_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 p_expr);
34 constraintExpr constraintExpr_setFileloc (/*@returned@*/ constraintExpr p_c, fileloc p_loc) /*@modifies p_c@*/;
36 constraintExpr constraintExpr_copy (constraintExpr p_expr) /*@*/;
38 /*@only@*/ cstring constraintExpr_unparse (/*@temp@*/ /*@observer@*/ constraintExpr p_ex) /*@*/;
39 extern cstring constraintExpr_print (constraintExpr p_expr) /*@*/;
42 bool constraintExpr_similar (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
43 bool constraintExpr_same (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
44 /*@only@*/ constraintExpr constraintExpr_searchandreplace (/*@only@*/ /*@unique@*/ constraintExpr p_c, /*@temp@*/ /*@observer@*/ constraintExpr p_old, /*@temp@*/ /*@observer@*/ constraintExpr p_newExpr ) /*@modifies p_c@*/;
46 bool constraintExpr_canGetValue (constraintExpr p_expr) /*@*/;
47 long constraintExpr_getValue (constraintExpr p_expr) /*@*/;
49 int constraintExpr_compare (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
51 //constraintExpr constraintExpr_makeValueInt (int i);
53 /*@only@*/ constraintExpr constraintExpr_makeIntLiteral (long p_i);
55 /*@only@*/ constraintExpr constraintExpr_makeValueExpr (/*@exposed@*/ exprNode p_expr);
57 /*@only@*/ constraintExpr constraintExpr_makeMaxSetExpr (/*@exposed@*/ exprNode p_expr);
59 /*@only@*/ constraintExpr constraintExpr_makeMaxReadExpr (/*@exposed@*/ exprNode p_expr);
61 /*@only@*/ constraintExpr constraintExpr_makeIncConstraintExpr (/*@only@*/ constraintExpr p_expr);
63 /*@only@*/ constraintExpr constraintExpr_makeDecConstraintExpr (/*@only@*/ constraintExpr p_expr);
65 /*@only@*/ constraintExpr constraintExpr_simplify (/*@only@*/ constraintExpr p_c);
67 /*@only@*/ constraintExpr constraintExpr_solveBinaryExpr (constraintExpr p_lexpr, /*@only@*/ constraintExpr p_expr) /*@modifies p_lexpr, p_expr @*/;
69 bool constraintExpr_search (/*@observer@*/ /*@temp@*/ constraintExpr p_c, /*@observer@*/ /*@temp@*/ constraintExpr p_old);
71 /*@only@*/ fileloc constraintExpr_getFileloc (constraintExpr p_expr);
74 /*@only@*/ constraintExpr constraintExpr_makeSRefMaxset ( /*@temp@*/ /*@observer@*/ sRef p_s);
76 /*@only@*/ constraintExpr constraintExpr_makeSRefMaxRead(/*@temp@*/ /*@observer@*/ sRef p_s);
78 /*@only@*/ constraintExpr constraintExpr_makeTermsRef (/*@temp@*/ sRef p_s);
80 constraintExpr constraintExpr_doSRefFixBaseParam ( /*@returned@*/ constraintExpr p_expr, exprNodeList p_arglist);
82 /*@only@*/ constraintExpr constraintExpr_makeExprNode (/*@dependent@*/ exprNode p_e);
84 /*@only@*/ constraintExpr constraintExpr_doFixResult (/*@only@*/ constraintExpr p_expr, /*@observer@*/ exprNode p_fcnCall);
86 /*@falsenull@*/ bool constraintExpr_isLit (constraintExpr p_expr) /*@*/ ;
88 /*@only@*/ constraintExpr constraintExpr_makeAddExpr (/*@only@*/ constraintExpr p_expr, /*@only@*/ constraintExpr p_addent);
90 /*@only@*/ constraintExpr constraintExpr_makeSubtractExpr (/*@only@*/ constraintExpr p_expr, /*@only@*/ constraintExpr p_addent);
92 /*@only@*/ constraintExpr constraintExpr_parseMakeUnaryOp (lltok p_op,/*@only@*/ constraintExpr p_cexpr);
94 constraintExpr constraintExpr_parseMakeBinaryOp (/*@only@*/ constraintExpr p_expr1, lltok p_op, /*@only@*/ constraintExpr p_expr2);
96 bool constraintExpr_hasMaxSet (/*@observer@*/ /*@temp@*/ constraintExpr p_expr);
100 /*@only@*/ constraintExpr constraintExpr_doSRefFixConstraintParam (/*@returned@*/ /*@only@*/ constraintExpr p_expr, exprNodeList p_arglist) /*@modifies p_expr@*/;
103 constraintExpr constraintExpr_propagateConstants (/*@only@*/ constraintExpr p_expr,
104 /*@out@*/ bool * p_propagate,
105 /*@out@*/ int *p_literal);
107 /*@falsenull@*/ bool constraintExpr_isBinaryExpr (/*@observer@*/ /*@temp@*/ constraintExpr p_c) /*@*/ ;
109 extern void constraintExpr_dump (/*@observer@*/ /*@temp@*/ constraintExpr p_expr, FILE *p_f);
111 extern /*@only@*/ constraintExpr constraintExpr_undump (FILE *p_f);
113 extern /*@only@*/ constraintExpr constraintExpr_makeTermExprNode (/*@exposed@*/ exprNode p_e) ;
117 # error "Multiple include"