1 #ifndef __constraint_h__
3 #define __constraint_h__
7 LT, LTE, GT, GTE, EQ, NONNEGATIVE, POSITIVE
11 //abst_typedef struct constr_ * constr;
22 abst_typedef struct _constraintTerm * constraintTerm;
24 //constraint constraint_create (exprNode e1, exprNode e2, arithType restriction, constraintType kind);
27 constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant);
30 constraint constraint_createReadSafe (exprNode p_e1, exprNode p_e2);
32 constraint constraint_makeInc_Op (exprNode p_e1);
36 bool constraint_resolve (/*@unused@*/ constraint c);
38 /*@out@*/ constraintTerm new_constraintTermExpr (void);
40 /*@special@*/ constraintExpr makeConstraintExpr (/*@only@*/ /*@notnull@*/ constraintTerm term)
41 /*@post:isnull result->expr@*/
42 /*@post:notnull result->t1@*/
43 /*@defines result->expr, result->t1, result->c1@, result->op*/;
45 constraintExpr makeConstraintExprIntlit (int p_i);
47 /*@relnull@*/ constraint constraint_makeReadSafeExprNode ( exprNode p_po, exprNode p_ind);
49 constraint constraint_makeWriteSafeExprNode (exprNode p_po, exprNode p_ind);
51 constraint constraint_makeReadSafeInt (exprNode p_t1, int p_index);
53 constraint constraint_makeEnsureMaxReadAtLeast (exprNode p_t1, exprNode p_t2, fileloc p_sequencePoint);
55 constraint constraint_makeEnsureMinReadAtMost (exprNode po, exprNode ind, fileloc sequencePoint);
57 constraint constraint_makeSideEffectPostIncrement (exprNode t1, fileloc p_sequencePoint);
58 void constraint_overWrite (constraint c1, constraint c2);
59 constraint constraint_copy (constraint c);
61 constraintExpr makePostOpInc (exprNode t1);
64 bool fileloc_closer (fileloc loc1, fileloc loc2, fileloc loc3);
67 cstring arithType_print (arithType ar) /*@*/;
70 fileloc constraint_getFileloc (constraint c);
71 cstring constraint_print (constraint c) /*@*/;
72 constraint constraint_makeWriteSafeInt (exprNode po, int ind);
74 exprNode exprNode_copyConstraints (exprNode dst, exprNode src);
76 constraint constraint_makeEnsureEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
78 constraint constraint_makeMaxSetSideEffectPostIncrement (exprNode e, fileloc sequencePoint);
80 constraint constraint_preserveOrig (constraint c);
81 constraint constraint_doSRefFixBaseParam (constraint precondition,
82 exprNodeList arglist);
84 cstring constraint_printDetailed (constraint c);
86 constraint constraint_makeEnsureLessThan (exprNode e1, exprNode e2, fileloc sequencePoint);
88 constraint constraint_makeEnsureLessThanEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
89 constraint constraint_makeEnsureGreaterThan (exprNode e1, exprNode e2, fileloc sequencePoint);
90 constraint constraint_makeEnsureGreaterThanEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
92 /*drl add 11/28/2000 */
93 constraint constraint_makeSRefWriteSafeInt (sRef s, int ind);
95 /*drl add 11/26/2000 */
96 void constraint_printError (constraint c, fileloc loc);
97 constraint constraint_doSRefFixConstraintParam (constraint precondition,
98 exprNodeList arglist);
100 constraint constraint_makeSRefSetBufferSize (sRef s, int size);
102 constraint constraint_doFixResult (constraint postcondition, exprNode fcnCall);
104 constraint constraint_makeEnsureLteMaxRead(exprNode index, exprNode buffer);
106 constraint constraint_makeMaxSetSideEffectPostDecrement (exprNode e, fileloc sequencePoint);
107 bool constraint_search (constraint c, constraintExpr old);
109 //#warning take this out
110 #include "constraintList.h"
112 #include "constraintExpr.h"
113 #include "constraintTerm.h"
114 #include "constraintResolve.h"