]> andersk Git - splint.git/blame - src/Headers/constraint.h
Updteing for cert move
[splint.git] / src / Headers / constraint.h
CommitLineData
92c4a786 1#ifndef __constraint_h__
bf92e32c 2
92c4a786 3#define __constraint_h__
bf92e32c 4
d0e5b01f 5typedef enum
6{
7 LT, LTE, GT, GTE, EQ, NONNEGATIVE, POSITIVE
8}
9arithType;
10
bf92e32c 11//abst_typedef struct constr_ * constr;
4cccc6ad 12
13
14struct _constraint {
bf92e32c 15 constraint orig;
90bc41f7 16 constraint or;
361091cc 17 constraintExpr lexpr;
4cccc6ad 18 arithType ar;
361091cc 19 constraintExpr expr;
4cccc6ad 20 bool post;
103db890 21 exprNode generatingExpr;
d0e5b01f 22} ;
23
92c4a786 24abst_typedef struct _constraintTerm * constraintTerm;
25
4cccc6ad 26//constraint constraint_create (exprNode e1, exprNode e2, arithType restriction, constraintType kind);
27
93307a76 28
29constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant);
30
31
4cccc6ad 32constraint constraint_createReadSafe (exprNode p_e1, exprNode p_e2);
33
34constraint constraint_makeInc_Op (exprNode p_e1);
35
36/*@i22*/
37/*@-czechfcns*/
38bool constraint_resolve (/*@unused@*/ constraint c);
39
40/*@out@*/ constraintTerm new_constraintTermExpr (void);
4cccc6ad 41
42/*@special@*/ constraintExpr makeConstraintExpr (/*@only@*/ /*@notnull@*/ constraintTerm term)
361091cc 43 /*@post:isnull result->expr@*/
4cccc6ad 44 /*@post:notnull result->t1@*/
361091cc 45 /*@defines result->expr, result->t1, result->c1@, result->op*/;
4cccc6ad 46
47constraintExpr makeConstraintExprIntlit (int p_i);
48
49/*@relnull@*/ constraint constraint_makeReadSafeExprNode ( exprNode p_po, exprNode p_ind);
50
51constraint constraint_makeWriteSafeExprNode (exprNode p_po, exprNode p_ind);
52
53constraint constraint_makeReadSafeInt (exprNode p_t1, int p_index);
54
55constraint constraint_makeEnsureMaxReadAtLeast (exprNode p_t1, exprNode p_t2, fileloc p_sequencePoint);
56
57constraint constraint_makeEnsureMinReadAtMost (exprNode po, exprNode ind, fileloc sequencePoint);
58
59constraint constraint_makeSideEffectPostIncrement (exprNode t1, fileloc p_sequencePoint);
754746a0 60void constraint_overWrite (constraint c1, constraint c2);
361091cc 61constraint constraint_copy (constraint c);
4cccc6ad 62
63constraintExpr makePostOpInc (exprNode t1);
64
65
754746a0 66bool fileloc_closer (fileloc loc1, fileloc loc2, fileloc loc3);
ef2aa32a 67
4cccc6ad 68
f5ac53de 69cstring arithType_print (arithType ar) /*@*/;
4cccc6ad 70
ef2aa32a 71
92c4a786 72fileloc constraint_getFileloc (constraint c);
f5ac53de 73cstring constraint_print (constraint c) /*@*/;
754746a0 74constraint constraint_makeWriteSafeInt (exprNode po, int ind);
75
dc92450f 76exprNode exprNode_copyConstraints (/*@returned@*/ exprNode dst, exprNode src);
754746a0 77
78constraint constraint_makeEnsureEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
79
80constraint constraint_makeMaxSetSideEffectPostIncrement (exprNode e, fileloc sequencePoint);
81
dc92450f 82/*@only@*/ constraint constraint_preserveOrig (/*@returned@*/ /*@only@*/ constraint c) /*@modifies c @*/;
83/*@only@*/ constraint constraint_doSRefFixBaseParam (/*@returned@*/ /*@only@*/ constraint precondition,
93307a76 84 exprNodeList arglist);
85
86cstring constraint_printDetailed (constraint c);
87
34f0c5e7 88constraint constraint_makeEnsureLessThan (exprNode e1, exprNode e2, fileloc sequencePoint);
89
90constraint constraint_makeEnsureLessThanEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
91constraint constraint_makeEnsureGreaterThan (exprNode e1, exprNode e2, fileloc sequencePoint);
92constraint constraint_makeEnsureGreaterThanEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
93
94/*drl add 11/28/2000 */
95constraint constraint_makeSRefWriteSafeInt (sRef s, int ind);
470b7798 96constraint constraint_makeSRefReadSafeInt (sRef s, int ind);
ef2aa32a 97/*drl add 11/26/2000 */
98void constraint_printError (constraint c, fileloc loc);
99constraint constraint_doSRefFixConstraintParam (constraint precondition,
100 exprNodeList arglist);
101
102constraint constraint_makeSRefSetBufferSize (sRef s, int size);
103
104constraint constraint_doFixResult (constraint postcondition, exprNode fcnCall);
105
106constraint constraint_makeEnsureLteMaxRead(exprNode index, exprNode buffer);
107
97e4a647 108constraint constraint_makeMaxSetSideEffectPostDecrement (exprNode e, fileloc sequencePoint);
109bool constraint_search (constraint c, constraintExpr old);
103db890 110
111constraint makeConstraintParse3 (constraintExpr l, lltok relOp, constraintExpr r);
112
113constraint constraint_addGeneratingExpr (/*@returned@*/ constraint c, exprNode e);
114
115bool constraint_hasMaxSet(constraint c);
116
470b7798 117/*from constraintGenreation.c*/
118bool exprNode_exprTraverse (exprNode e, bool definatelv, bool definaterv, fileloc sequencePoint);
119
120constraintList exprNode_traversRequiresConstraints (exprNode e);
121constraintList exprNode_traversEnsuresConstraints (exprNode e);
122
123
124
4cccc6ad 125/*@=czechfcns*/
ef2aa32a 126//#warning take this out
4cccc6ad 127#include "constraintList.h"
d0e5b01f 128
92c4a786 129#include "constraintExpr.h"
361091cc 130#include "constraintTerm.h"
754746a0 131#include "constraintResolve.h"
dc92450f 132#include "constraintOutput.h"
133
92c4a786 134#endif
d0e5b01f 135
This page took 0.091754 seconds and 5 git commands to generate.