]> andersk Git - splint.git/blame_incremental - src/Headers/constraint.h
*** empty log message ***
[splint.git] / src / Headers / constraint.h
... / ...
CommitLineData
1#ifndef __constraint_h__
2
3#define __constraint_h__
4
5typedef enum
6{
7 LT, LTE, GT, GTE, EQ, NONNEGATIVE, POSITIVE
8}
9arithType;
10
11struct s_constraint {
12 constraint orig;
13 constraint or;
14 bool fcnPre;
15 constraintExpr lexpr;
16 arithType ar;
17 constraintExpr expr;
18 bool post;
19 /*@observer@*/ /*@exposed@*/ /*@dependent@*/ exprNode generatingExpr;
20} ;
21
22/*@constant null constraint constraint_undefined; @*/
23
24# define constraint_undefined ((constraint)NULL)
25
26extern /*@falsewhennull@*/ bool constraint_isDefined (constraint p_e) /*@*/ ;
27extern /*@unused@*/ /*@nullwhentrue@*/ bool constraint_isUndefined (constraint p_e) /*@*/ ;
28extern /*@nullwhentrue@*/ /*@unused@*/ bool constraint_isError (constraint p_e) /*@*/ ;
29
30# define constraint_isDefined(e) ((e) != constraint_undefined)
31# define constraint_isUndefined(e) ((e) == constraint_undefined)
32# define constraint_isError(e) ((e) == constraint_undefined)
33
34extern void constraint_free (/*@only@*/ constraint p_c);
35
36/* constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant); */
37
38/*@i22*/
39/*@-czechfcns*/
40
41extern constraint constraint_makeReadSafeExprNode ( /*@dependent@*/ /*@observer@*/ exprNode p_po, /*@dependent@*/ /*@observer@*/ exprNode p_ind);
42
43extern /*@only@*/ constraint constraint_makeWriteSafeExprNode (/*@dependent@*/ /*@observer@*/ exprNode p_po, /*@dependent@*/ /*@observer@*/ exprNode p_ind);
44
45extern /*@only@*/ constraint constraint_makeReadSafeInt (/*@dependent@*/ /*@observer@*/ exprNode p_t1, int p_index);
46
47extern /*@only@*/ constraint constraint_makeEnsureMaxReadAtLeast (/*@dependent@*/ /*@observer@*/ exprNode p_t1, /*@dependent@*/ /*@observer@*/ exprNode p_t2, fileloc p_sequencePoint);
48
49extern void constraint_overWrite (constraint p_c1, /*@observer@*/ constraint p_c2) /*@modifies p_c1 @*/;
50
51extern /*@only@*/ constraint constraint_copy (/*@temp@*/ /*@observer@*/ constraint p_c);
52
53extern bool fileloc_closer (/*@observer@*/ fileloc p_loc1, /*@observer@*/ fileloc p_loc2, /*@observer@*/ fileloc p_loc3) /*@*/;
54
55extern /*@only@*/ cstring arithType_print (arithType p_ar) /*@*/;
56
57extern /*@only@*/ fileloc constraint_getFileloc (constraint p_c);
58
59extern /*@only@*/ cstring constraint_unparse (/*@temp@*/ /*@observer@*/ constraint p_c) /*@*/;
60# define constraint_unparse constraint_print
61
62extern /*@only@*/ cstring constraint_print (/*@temp@*/ /*@observer@*/ constraint p_c) /*@*/;
63
64extern /*@only@*/ constraint constraint_makeWriteSafeInt (/*@dependent@*/ /*@observer@*/ exprNode p_po, int p_ind);
65
66extern exprNode exprNode_copyConstraints (/*@returned@*/ exprNode p_dst, exprNode p_src) /*@modifies p_dst @*/;
67
68extern /*@only@*/ constraint constraint_makeEnsureEqual (/*@dependent@*/ /*@observer@*/ exprNode p_e1, /*@dependent@*/ /*@observer@*/ exprNode p_e2, fileloc p_sequencePoint);
69
70extern /*@only@*/ constraint constraint_makeMaxSetSideEffectPostIncrement (/*@dependent@*/ /*@observer@*/ exprNode p_e, fileloc p_sequencePoint);
71
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);
76
77extern /*@only@*/ constraint constraint_makeEnsureLessThan (/*@dependent@*/ /*@observer@*/ exprNode p_e1, /*@dependent@*/ /*@observer@*/ exprNode p_e2, fileloc p_sequencePoint);
78extern /*@only@*/ constraint constraint_makeEnsureLessThanEqual (/*@dependent@*/ /*@observer@*/ exprNode p_e1, /*@dependent@*/ /*@observer@*/ exprNode p_e2, fileloc p_sequencePoint);
79
80extern /*@only@*/ constraint constraint_makeEnsureGreaterThan (/*@dependent@*/ /*@observer@*/ exprNode p_e1, /*@dependent@*/ /*@observer@*/ exprNode p_e2, fileloc p_sequencePoint);
81extern /*@only@*/ constraint constraint_makeEnsureGreaterThanEqual (/*@dependent@*/ /*@observer@*/ exprNode p_e1, /*@dependent@*/ /*@observer@*/ exprNode p_e2, fileloc p_sequencePoint);
82
83/*drl add 11/28/2000 */
84extern /*@only@*/ constraint constraint_makeSRefWriteSafeInt (sRef p_s, int p_ind);
85extern /*@unused@*/ /*@only@*/ constraint constraint_makeSRefReadSafeInt (sRef p_s, int p_ind);
86/*drl add 11/26/2000 */
87extern void constraint_printError (/*@observer@*/ /*@temp@*/ constraint p_c, /*@temp@*/ /*@observer@*/ fileloc p_loc);
88
89extern /*@only@*/ constraint constraint_doSRefFixConstraintParam (constraint p_precondition,
90 /*@temp@*/ /*@observer@*/ exprNodeList p_arglist);
91
92extern /*@only@*/ constraint constraint_makeSRefSetBufferSize (sRef p_s, long int p_size);
93
94extern /*@only@*/ constraint constraint_doFixResult (constraint p_postcondition, /*@dependent@*/ /*@observer@*/ exprNode p_fcnCall);
95
96extern /*@only@*/ constraint constraint_makeEnsureLteMaxRead(/*@dependent@*/ /*@observer@*/ exprNode p_index, /*@dependent@*/ /*@observer@*/ exprNode p_buffer);
97
98extern /*@only@*/ constraint constraint_makeMaxSetSideEffectPostDecrement (/*@dependent@*/ /*@observer@*/ exprNode p_e, fileloc p_sequencePoint);
99
100extern bool constraint_search (constraint p_c, constraintExpr p_old);
101
102extern /*@only@*/ constraint makeConstraintParse3 (constraintExpr p_l, lltok p_relOp, constraintExpr p_r);
103
104extern constraint constraint_addGeneratingExpr (/*@returned@*/ constraint p_c, /*@dependent@*/ /*@exposed@*/ exprNode p_e);
105
106extern bool constraint_hasMaxSet(constraint p_c);
107
108/*from constraintGenreation.c*/
109extern void exprNode_exprTraverse (/*@dependent@*/ exprNode p_e, bool p_definatelv, bool p_definaterv, /*@temp@*/ /*@observer@*/ fileloc p_sequencePoint);
110
111extern /*@only@*/ constraintList exprNode_traversRequiresConstraints (/*@dependent@*/ exprNode p_e);
112extern /*@only@*/ constraintList exprNode_traversEnsuresConstraints (/*@dependent@*/ exprNode p_e);
113
114extern constraint constraint_togglePost (/*@returned@*/ constraint p_c);
115extern bool constraint_same (constraint p_c1, constraint p_c2) ;
116
117/*@only@*/ cstring constraint_printOr (constraint p_c) /*@*/;
118extern void constraint_printErrorPostCondition (constraint p_c, fileloc p_loc) ;
119
120extern cstring constraint_printLocation (/*@observer@*/ /*@temp@*/ constraint p_c) /*@*/; /*drl add 8-11-001*/
121
122extern constraint constraint_setFcnPre (/*@returned@*/ constraint p_c) ;
123extern constraint constraint_origAddGeneratingExpr (/*@returned@*/ constraint p_c, /*@dependent@*/ /*@observer@*/ exprNode p_e) ;
124
125extern bool /*@alt void@*/ exprNode_generateConstraints (/*@dependent@*/ exprNode p_e) ;
126constraint constraint_togglePostOrig (/*@returned@*/ constraint p_c);
127
128bool constraint_hasOrig( /*@observer@*/ /*@temp@*/ constraint p_c);
129
130constraint constraint_makeAddAssign (/*@dependent@*/ /*@observer@*/ exprNode p_e, /*@dependent@*/ /*@observer@*/ exprNode p_f, fileloc p_sequencePoint);
131
132constraint constraint_makeSubtractAssign (/*@dependent@*/ /*@observer@*/ exprNode p_e, /*@dependent@*/ /*@observer@*/ exprNode p_f, fileloc p_sequencePoint);
133
134/*@only@*/ constraint constraint_undump (FILE * p_f);
135
136void constraint_dump (/*@observer@*/ constraint p_c, FILE * p_f);
137
138extern void exprNode_forLoopHeuristics( /*@dependent@*/ exprNode p_e, /*@dependent@*/ exprNode p_forPred, /*@dependent@*/ exprNode p_forBody);
139
140int constraint_compare (/*@observer@*/ /*@temp@*/ const constraint * p_c1, /*@observer@*/ /*@temp@*/ const constraint * p_c2) /*@*/;
141
142bool constraint_isPost (/*@observer@*/ /*@temp@*/ constraint p_c);
143
144bool constraint_tooDeep (/*@observer@*/ /*@temp@*/ constraint p_c);
145
146void exprNode_findValue( exprNode p_e);
147
148/*drl 1/6/2001: I didn't think these functions were solid enough to include in the stable release of splint.*/
149/*drl added 12/30/01 */
150/* extern / *@only@* / constraint constraint_doSRefFixInvarConstraint(constraint p_invar, sRef p_s, ctype p_ct ); */
151
152/*@=czechfcns*/
153/* drl possible problem : warning take this out */
154
155#include "constraintResolve.h"
156#include "constraintOutput.h"
157
158#else
159
160#error Multiple include
161
162#endif
163
This page took 0.032856 seconds and 5 git commands to generate.