]> andersk Git - splint.git/blame - src/Headers/constraint.h
*** empty log message ***
[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
28bf4b0b 11struct s_constraint {
bf92e32c 12 constraint orig;
90bc41f7 13 constraint or;
4ab867d6 14 bool fcnPre;
361091cc 15 constraintExpr lexpr;
4cccc6ad 16 arithType ar;
361091cc 17 constraintExpr expr;
4cccc6ad 18 bool post;
795e7f34 19 /*@observer@*/ /*@exposed@*/ /*@dependent@*/ exprNode generatingExpr;
d0e5b01f 20} ;
21
6e88de2d 22/*@constant null constraint constraint_undefined; @*/
92c4a786 23
6e88de2d 24# define constraint_undefined ((constraint)NULL)
4cccc6ad 25
6e88de2d 26extern /*@falsenull@*/ bool constraint_isDefined (constraint p_e) /*@*/ ;
27extern /*@unused@*/ /*@truenull@*/ bool constraint_isUndefined (constraint p_e) /*@*/ ;
84c9ffbf 28extern /*@truenull@*/ /*@unused@*/ bool constraint_isError (constraint p_e) /*@*/ ;
93307a76 29
6e88de2d 30# define constraint_isDefined(e) ((e) != constraint_undefined)
31# define constraint_isUndefined(e) ((e) == constraint_undefined)
32# define constraint_isError(e) ((e) == constraint_undefined)
93307a76 33
28bf4b0b 34extern void constraint_free (/*@only@*/ constraint p_c);
4cccc6ad 35
bb25bea6 36//constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant);
4cccc6ad 37
38/*@i22*/
39/*@-czechfcns*/
4cccc6ad 40
28bf4b0b 41extern constraint constraint_makeReadSafeExprNode ( /*@dependent@*/ /*@oberserver@*/ exprNode p_po, /*@dependent@*/ /*@oberserver@*/ exprNode p_ind);
4cccc6ad 42
28bf4b0b 43extern /*@only@*/ constraint constraint_makeWriteSafeExprNode (/*@dependent@*/ /*@oberserver@*/ exprNode p_po, /*@dependent@*/ /*@oberserver@*/ exprNode p_ind);
4cccc6ad 44
28bf4b0b 45extern /*@only@*/ constraint constraint_makeReadSafeInt (/*@dependent@*/ /*@oberserver@*/ exprNode p_t1, int p_index);
4cccc6ad 46
28bf4b0b 47extern /*@only@*/ constraint constraint_makeEnsureMaxReadAtLeast (/*@dependent@*/ /*@oberserver@*/ exprNode p_t1, /*@dependent@*/ /*@oberserver@*/ exprNode p_t2, fileloc p_sequencePoint);
4cccc6ad 48
28bf4b0b 49extern void constraint_overWrite (constraint p_c1, /*@observer@*/ constraint p_c2) /*@modifies p_c1 @*/;
4cccc6ad 50
28bf4b0b 51extern /*@only@*/ constraint constraint_copy (/*@temp@*/ /*@observer@*/ constraint p_c);
4cccc6ad 52
28bf4b0b 53extern bool fileloc_closer (/*@observer@*/ fileloc p_loc1, /*@observer@*/ fileloc p_loc2, /*@observer@*/ fileloc p_loc3) /*@*/;
4cccc6ad 54
28bf4b0b 55extern /*@only@*/ cstring arithType_print (arithType p_ar) /*@*/;
4cccc6ad 56
28bf4b0b 57extern /*@only@*/ fileloc constraint_getFileloc (constraint p_c);
3814599d 58
59extern /*@only@*/ cstring constraint_unparse (/*@temp@*/ /*@observer@*/ constraint p_c) /*@*/;
60# define constraint_unparse constraint_print
61
28bf4b0b 62extern /*@only@*/ cstring constraint_print (/*@temp@*/ /*@observer@*/ constraint p_c) /*@*/;
d46ce6a4 63
28bf4b0b 64extern /*@only@*/ constraint constraint_makeWriteSafeInt (/*@dependent@*/ /*@oberserver@*/ exprNode p_po, int p_ind);
ef2aa32a 65
28bf4b0b 66extern exprNode exprNode_copyConstraints (/*@returned@*/ exprNode p_dst, exprNode p_src) /*@modifies p_dst @*/;
4cccc6ad 67
28bf4b0b 68extern /*@only@*/ constraint constraint_makeEnsureEqual (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@oberserver@*/ exprNode p_e2, fileloc p_sequencePoint);
4cccc6ad 69
28bf4b0b 70extern /*@only@*/ constraint constraint_makeMaxSetSideEffectPostIncrement (/*@dependent@*/ /*@oberserver@*/ exprNode p_e, fileloc p_sequencePoint);
ef2aa32a 71
28bf4b0b 72extern constraint constraint_preserveOrig (/*@returned@*/ constraint p_c) /*@modifies p_c @*/;
73extern /*@only@*/ constraint constraint_doSRefFixBaseParam (/*@returned@*/ /*@only@*/ constraint p_precondition,
74 exprNodeList p_arglist);
75extern /*@only@*/ cstring constraint_printDetailed (constraint p_c);
754746a0 76
28bf4b0b 77extern /*@only@*/ constraint constraint_makeEnsureLessThan (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@oberserver@*/ exprNode p_e2, fileloc p_sequencePoint);
78extern /*@only@*/ constraint constraint_makeEnsureLessThanEqual (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@observer@*/ exprNode p_e2, fileloc p_sequencePoint);
754746a0 79
28bf4b0b 80extern /*@only@*/ constraint constraint_makeEnsureGreaterThan (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@oberserver@*/ exprNode p_e2, fileloc p_sequencePoint);
81extern /*@only@*/ constraint constraint_makeEnsureGreaterThanEqual (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@oberserver@*/ exprNode p_e2, fileloc p_sequencePoint);
34f0c5e7 82
83/*drl add 11/28/2000 */
28bf4b0b 84extern /*@only@*/ constraint constraint_makeSRefWriteSafeInt (sRef p_s, int p_ind);
85extern /*@unused@*/ /*@only@*/ constraint constraint_makeSRefReadSafeInt (sRef p_s, int p_ind);
ef2aa32a 86/*drl add 11/26/2000 */
28bf4b0b 87extern void constraint_printError (/*@observer@*/ /*@temp@*/ constraint p_c, /*@temp@*/ /*@observer@*/ fileloc p_loc);
d46ce6a4 88
28bf4b0b 89extern /*@only@*/ constraint constraint_doSRefFixConstraintParam (constraint p_precondition,
90 /*@temp@*/ /*@observer@*/ exprNodeList p_arglist);
ef2aa32a 91
28bf4b0b 92extern /*@only@*/ constraint constraint_makeSRefSetBufferSize (sRef p_s, long int p_size);
d46ce6a4 93
28bf4b0b 94extern /*@only@*/ constraint constraint_doFixResult (constraint p_postcondition, /*@dependent@*/ /*@observer@*/ exprNode p_fcnCall);
ef2aa32a 95
28bf4b0b 96extern /*@only@*/ constraint constraint_makeEnsureLteMaxRead(/*@dependent@*/ /*@oberserver@*/ exprNode p_index, /*@dependent@*/ /*@oberserver@*/ exprNode p_buffer);
ef2aa32a 97
28bf4b0b 98extern /*@only@*/ constraint constraint_makeMaxSetSideEffectPostDecrement (/*@dependent@*/ /*@oberserver@*/ exprNode p_e, fileloc p_sequencePoint);
ef2aa32a 99
28bf4b0b 100extern bool constraint_search (constraint p_c, constraintExpr p_old);
103db890 101
28bf4b0b 102extern /*@only@*/ constraint makeConstraintParse3 (constraintExpr p_l, lltok p_relOp, constraintExpr p_r);
103db890 103
b37cf05e 104extern constraint constraint_addGeneratingExpr (/*@returned@*/ constraint p_c, /*@dependent@*/ /*@exposed@*/ exprNode p_e);
103db890 105
28bf4b0b 106extern bool constraint_hasMaxSet(constraint p_c);
103db890 107
470b7798 108/*from constraintGenreation.c*/
28bf4b0b 109extern void exprNode_exprTraverse (/*@dependent@*/ exprNode p_e, bool p_definatelv, bool p_definaterv, /*@temp@*/ /*@observer@*/ fileloc p_sequencePoint);
2934b455 110
28bf4b0b 111extern /*@only@*/ constraintList exprNode_traversRequiresConstraints (/*@dependent@*/ exprNode p_e);
112extern /*@only@*/ constraintList exprNode_traversEnsuresConstraints (/*@dependent@*/ exprNode p_e);
2934b455 113
28bf4b0b 114extern constraint constraint_togglePost (/*@returned@*/ constraint p_c);
115extern bool constraint_same (constraint p_c1, constraint p_c2) ;
2934b455 116
28bf4b0b 117/*@only@*/ cstring constraint_printOr (constraint p_c) /*@*/;
2934b455 118extern void constraint_printErrorPostCondition (constraint p_c, fileloc p_loc) ;
119extern constraint constraint_setFcnPre (/*@returned@*/ constraint p_c) ;
28bf4b0b 120extern constraint constraint_origAddGeneratingExpr (/*@returned@*/ constraint p_c, /*@dependent@*/ /*@oberserver@*/ exprNode p_e) ;
470b7798 121
28bf4b0b 122extern bool /*@alt void@*/ exprNode_generateConstraints (/*@dependent@*/ exprNode p_e) ;
123constraint constraint_togglePostOrig (/*@returned@*/ constraint p_c);
470b7798 124
28bf4b0b 125bool constraint_hasOrig( /*@observer@*/ /*@temp@*/ constraint p_c);
470b7798 126
28bf4b0b 127constraint constraint_makeAddAssign (/*@dependent@*/ /*@observer@*/ exprNode p_e, /*@dependent@*/ /*@observer@*/ exprNode p_f, fileloc p_sequencePoint);
920a3797 128
28bf4b0b 129constraint constraint_makeSubtractAssign (/*@dependent@*/ /*@observer@*/ exprNode p_e, /*@dependent@*/ /*@observer@*/ exprNode p_f, fileloc p_sequencePoint);
920a3797 130
28bf4b0b 131/*@only@*/ constraint constraint_undump (FILE * p_f);
920a3797 132
28bf4b0b 133void constraint_dump (/*@observer@*/ constraint p_c, FILE * p_f);
134
135extern void exprNode_forLoopHeuristics( /*@dependent@*/ exprNode p_e, /*@dependent@*/ exprNode p_forPred, /*@dependent@*/ exprNode p_forBody);
d46ce6a4 136
4cccc6ad 137/*@=czechfcns*/
28bf4b0b 138////drl possible problem : warning take this out
d0e5b01f 139
754746a0 140#include "constraintResolve.h"
dc92450f 141#include "constraintOutput.h"
142
6e88de2d 143#else
144
145#error Multiple include
146
92c4a786 147#endif
d0e5b01f 148
This page took 3.352732 seconds and 5 git commands to generate.