]> andersk Git - splint.git/blame - src/Headers/constraint.h
Added basic support for simple loops.
[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;
361091cc 16 constraintExpr lexpr;
4cccc6ad 17 arithType ar;
361091cc 18 constraintExpr expr;
4cccc6ad 19 bool post;
d0e5b01f 20} ;
21
92c4a786 22abst_typedef struct _constraintTerm * constraintTerm;
23
4cccc6ad 24//constraint constraint_create (exprNode e1, exprNode e2, arithType restriction, constraintType kind);
25
93307a76 26
27constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant);
28
29
4cccc6ad 30constraint constraint_createReadSafe (exprNode p_e1, exprNode p_e2);
31
32constraint constraint_makeInc_Op (exprNode p_e1);
33
34/*@i22*/
35/*@-czechfcns*/
36bool constraint_resolve (/*@unused@*/ constraint c);
37
38/*@out@*/ constraintTerm new_constraintTermExpr (void);
4cccc6ad 39
40/*@special@*/ constraintExpr makeConstraintExpr (/*@only@*/ /*@notnull@*/ constraintTerm term)
361091cc 41 /*@post:isnull result->expr@*/
4cccc6ad 42 /*@post:notnull result->t1@*/
361091cc 43 /*@defines result->expr, result->t1, result->c1@, result->op*/;
4cccc6ad 44
45constraintExpr makeConstraintExprIntlit (int p_i);
46
47/*@relnull@*/ constraint constraint_makeReadSafeExprNode ( exprNode p_po, exprNode p_ind);
48
49constraint constraint_makeWriteSafeExprNode (exprNode p_po, exprNode p_ind);
50
51constraint constraint_makeReadSafeInt (exprNode p_t1, int p_index);
52
53constraint constraint_makeEnsureMaxReadAtLeast (exprNode p_t1, exprNode p_t2, fileloc p_sequencePoint);
54
55constraint constraint_makeEnsureMinReadAtMost (exprNode po, exprNode ind, fileloc sequencePoint);
56
57constraint constraint_makeSideEffectPostIncrement (exprNode t1, fileloc p_sequencePoint);
754746a0 58void constraint_overWrite (constraint c1, constraint c2);
361091cc 59constraint constraint_copy (constraint c);
4cccc6ad 60
61constraintExpr makePostOpInc (exprNode t1);
62
63
754746a0 64bool fileloc_closer (fileloc loc1, fileloc loc2, fileloc loc3);
ef2aa32a 65
4cccc6ad 66
f5ac53de 67cstring arithType_print (arithType ar) /*@*/;
4cccc6ad 68
ef2aa32a 69
92c4a786 70fileloc constraint_getFileloc (constraint c);
f5ac53de 71cstring constraint_print (constraint c) /*@*/;
754746a0 72constraint constraint_makeWriteSafeInt (exprNode po, int ind);
73
74exprNode exprNode_copyConstraints (exprNode dst, exprNode src);
75
76constraint constraint_makeEnsureEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
77
78constraint constraint_makeMaxSetSideEffectPostIncrement (exprNode e, fileloc sequencePoint);
79
93307a76 80constraint constraint_preserveOrig (constraint c);
81constraint constraint_doSRefFixBaseParam (constraint precondition,
82 exprNodeList arglist);
83
84cstring constraint_printDetailed (constraint c);
85
34f0c5e7 86constraint constraint_makeEnsureLessThan (exprNode e1, exprNode e2, fileloc sequencePoint);
87
88constraint constraint_makeEnsureLessThanEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
89constraint constraint_makeEnsureGreaterThan (exprNode e1, exprNode e2, fileloc sequencePoint);
90constraint constraint_makeEnsureGreaterThanEqual (exprNode e1, exprNode e2, fileloc sequencePoint);
91
92/*drl add 11/28/2000 */
93constraint constraint_makeSRefWriteSafeInt (sRef s, int ind);
94
ef2aa32a 95/*drl add 11/26/2000 */
96void constraint_printError (constraint c, fileloc loc);
97constraint constraint_doSRefFixConstraintParam (constraint precondition,
98 exprNodeList arglist);
99
100constraint constraint_makeSRefSetBufferSize (sRef s, int size);
101
102constraint constraint_doFixResult (constraint postcondition, exprNode fcnCall);
103
104constraint constraint_makeEnsureLteMaxRead(exprNode index, exprNode buffer);
105
97e4a647 106constraint constraint_makeMaxSetSideEffectPostDecrement (exprNode e, fileloc sequencePoint);
107bool constraint_search (constraint c, constraintExpr old);
4cccc6ad 108/*@=czechfcns*/
ef2aa32a 109//#warning take this out
4cccc6ad 110#include "constraintList.h"
d0e5b01f 111
92c4a786 112#include "constraintExpr.h"
361091cc 113#include "constraintTerm.h"
754746a0 114#include "constraintResolve.h"
92c4a786 115#endif
d0e5b01f 116
This page took 0.077583 seconds and 5 git commands to generate.