]> andersk Git - splint.git/blame - src/Headers/constraint.h
Added some additional tests fixed error in the maxset test
[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);
58extern /*@only@*/ cstring constraint_print (/*@temp@*/ /*@observer@*/ constraint p_c) /*@*/;
d46ce6a4 59
28bf4b0b 60extern /*@only@*/ constraint constraint_makeWriteSafeInt (/*@dependent@*/ /*@oberserver@*/ exprNode p_po, int p_ind);
ef2aa32a 61
28bf4b0b 62extern exprNode exprNode_copyConstraints (/*@returned@*/ exprNode p_dst, exprNode p_src) /*@modifies p_dst @*/;
4cccc6ad 63
28bf4b0b 64extern /*@only@*/ constraint constraint_makeEnsureEqual (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@oberserver@*/ exprNode p_e2, fileloc p_sequencePoint);
4cccc6ad 65
28bf4b0b 66extern /*@only@*/ constraint constraint_makeMaxSetSideEffectPostIncrement (/*@dependent@*/ /*@oberserver@*/ exprNode p_e, fileloc p_sequencePoint);
ef2aa32a 67
28bf4b0b 68extern constraint constraint_preserveOrig (/*@returned@*/ constraint p_c) /*@modifies p_c @*/;
69extern /*@only@*/ constraint constraint_doSRefFixBaseParam (/*@returned@*/ /*@only@*/ constraint p_precondition,
70 exprNodeList p_arglist);
71extern /*@only@*/ cstring constraint_printDetailed (constraint p_c);
754746a0 72
28bf4b0b 73extern /*@only@*/ constraint constraint_makeEnsureLessThan (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@oberserver@*/ exprNode p_e2, fileloc p_sequencePoint);
74extern /*@only@*/ constraint constraint_makeEnsureLessThanEqual (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@observer@*/ exprNode p_e2, fileloc p_sequencePoint);
754746a0 75
28bf4b0b 76extern /*@only@*/ constraint constraint_makeEnsureGreaterThan (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@oberserver@*/ exprNode p_e2, fileloc p_sequencePoint);
77extern /*@only@*/ constraint constraint_makeEnsureGreaterThanEqual (/*@dependent@*/ /*@oberserver@*/ exprNode p_e1, /*@dependent@*/ /*@oberserver@*/ exprNode p_e2, fileloc p_sequencePoint);
34f0c5e7 78
79/*drl add 11/28/2000 */
28bf4b0b 80extern /*@only@*/ constraint constraint_makeSRefWriteSafeInt (sRef p_s, int p_ind);
81extern /*@unused@*/ /*@only@*/ constraint constraint_makeSRefReadSafeInt (sRef p_s, int p_ind);
ef2aa32a 82/*drl add 11/26/2000 */
28bf4b0b 83extern void constraint_printError (/*@observer@*/ /*@temp@*/ constraint p_c, /*@temp@*/ /*@observer@*/ fileloc p_loc);
d46ce6a4 84
28bf4b0b 85extern /*@only@*/ constraint constraint_doSRefFixConstraintParam (constraint p_precondition,
86 /*@temp@*/ /*@observer@*/ exprNodeList p_arglist);
ef2aa32a 87
28bf4b0b 88extern /*@only@*/ constraint constraint_makeSRefSetBufferSize (sRef p_s, long int p_size);
d46ce6a4 89
28bf4b0b 90extern /*@only@*/ constraint constraint_doFixResult (constraint p_postcondition, /*@dependent@*/ /*@observer@*/ exprNode p_fcnCall);
ef2aa32a 91
28bf4b0b 92extern /*@only@*/ constraint constraint_makeEnsureLteMaxRead(/*@dependent@*/ /*@oberserver@*/ exprNode p_index, /*@dependent@*/ /*@oberserver@*/ exprNode p_buffer);
ef2aa32a 93
28bf4b0b 94extern /*@only@*/ constraint constraint_makeMaxSetSideEffectPostDecrement (/*@dependent@*/ /*@oberserver@*/ exprNode p_e, fileloc p_sequencePoint);
ef2aa32a 95
28bf4b0b 96extern bool constraint_search (constraint p_c, constraintExpr p_old);
103db890 97
28bf4b0b 98extern /*@only@*/ constraint makeConstraintParse3 (constraintExpr p_l, lltok p_relOp, constraintExpr p_r);
103db890 99
28bf4b0b 100extern constraint constraint_addGeneratingExpr (/*@returned@*/ constraint p_c, /*@dependent@*/ /*@oberserver@*/ exprNode p_e);
103db890 101
28bf4b0b 102extern bool constraint_hasMaxSet(constraint p_c);
103db890 103
470b7798 104/*from constraintGenreation.c*/
28bf4b0b 105extern void exprNode_exprTraverse (/*@dependent@*/ exprNode p_e, bool p_definatelv, bool p_definaterv, /*@temp@*/ /*@observer@*/ fileloc p_sequencePoint);
2934b455 106
28bf4b0b 107extern /*@only@*/ constraintList exprNode_traversRequiresConstraints (/*@dependent@*/ exprNode p_e);
108extern /*@only@*/ constraintList exprNode_traversEnsuresConstraints (/*@dependent@*/ exprNode p_e);
2934b455 109
28bf4b0b 110extern constraint constraint_togglePost (/*@returned@*/ constraint p_c);
111extern bool constraint_same (constraint p_c1, constraint p_c2) ;
2934b455 112
28bf4b0b 113/*@only@*/ cstring constraint_printOr (constraint p_c) /*@*/;
2934b455 114extern void constraint_printErrorPostCondition (constraint p_c, fileloc p_loc) ;
115extern constraint constraint_setFcnPre (/*@returned@*/ constraint p_c) ;
28bf4b0b 116extern constraint constraint_origAddGeneratingExpr (/*@returned@*/ constraint p_c, /*@dependent@*/ /*@oberserver@*/ exprNode p_e) ;
470b7798 117
28bf4b0b 118extern bool /*@alt void@*/ exprNode_generateConstraints (/*@dependent@*/ exprNode p_e) ;
119constraint constraint_togglePostOrig (/*@returned@*/ constraint p_c);
470b7798 120
28bf4b0b 121bool constraint_hasOrig( /*@observer@*/ /*@temp@*/ constraint p_c);
470b7798 122
28bf4b0b 123constraint constraint_makeAddAssign (/*@dependent@*/ /*@observer@*/ exprNode p_e, /*@dependent@*/ /*@observer@*/ exprNode p_f, fileloc p_sequencePoint);
920a3797 124
28bf4b0b 125constraint constraint_makeSubtractAssign (/*@dependent@*/ /*@observer@*/ exprNode p_e, /*@dependent@*/ /*@observer@*/ exprNode p_f, fileloc p_sequencePoint);
920a3797 126
28bf4b0b 127/*@only@*/ constraint constraint_undump (FILE * p_f);
920a3797 128
28bf4b0b 129void constraint_dump (/*@observer@*/ constraint p_c, FILE * p_f);
130
131extern void exprNode_forLoopHeuristics( /*@dependent@*/ exprNode p_e, /*@dependent@*/ exprNode p_forPred, /*@dependent@*/ exprNode p_forBody);
d46ce6a4 132
4cccc6ad 133/*@=czechfcns*/
28bf4b0b 134////drl possible problem : warning take this out
d0e5b01f 135
754746a0 136#include "constraintResolve.h"
dc92450f 137#include "constraintOutput.h"
138
6e88de2d 139#else
140
141#error Multiple include
142
92c4a786 143#endif
d0e5b01f 144
This page took 0.10516 seconds and 5 git commands to generate.