2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2000.
3 ** See ../LICENSE for license information.
5 # ifndef constraintLIST_H
6 # define constraintLIST_H
8 typedef /*@only@*/ /*@notnull@*/ constraint o_constraint;
10 struct _constraintList
14 /*@reldef@*/ /*@relnull@*/ o_constraint *elements;
17 /*@constant null constraintList constraintList_undefined;@*/
19 # define constraintList_undefined ((constraintList)NULL)
21 extern /*@falsenull@*/ bool constraintList_isDefined (constraintList p_e) /*@*/ ;
22 extern /*@unused@*/ /*@truenull@*/ bool constraintList_isUndefined (constraintList p_e) /*@*/ ;
23 extern /*@truenull@*/ /*@unused@*/ bool constraintList_isError (constraintList p_e) /*@*/ ;
25 # define constraintList_isDefined(e) ((e) != constraintList_undefined)
26 # define constraintList_isUndefined(e) ((e) == constraintList_undefined)
27 # define constraintList_isError(e) ((e) == constraintList_undefined)
29 extern /*@only@*/ constraintList constraintList_addListFree (/*@only@*/ constraintList, /*@only@*/ constraintList) ;
30 extern constraintList constraintList_preserveCallInfo (/*@returned@*/ constraintList p_c, exprNode p_fcn) ;
32 /*@iter constraintList_elements (sef constraintList x, yield exposed constraint el); @*/
33 # define constraintList_elements(x, m_el) \
34 { int m_ind; constraint *m_elements = &((x)->elements[0]); \
35 for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
36 { constraint m_el = *(m_elements++);
38 # define end_constraintList_elements }}
40 extern /*@only@*/ constraintList constraintList_makeNew(void) /*@*/;
41 extern constraintList constraintList_add (/*@returned@*/ constraintList p_s, /*@only@*/ constraint p_el) /*@modifies p_s@*/ ;
43 extern /*@only@*/ constraintList constraintList_addList (/*@returned@*/ constraintList p_s, /*@observer@*/ constraintList new) /*@modifies p_s@*/ ;
46 extern constraintList constraintList_copy ( /*@observer@*/ constraintList p_s) /*@*/ ;
48 //extern /*@only@*/ cstring constraintList_unparse ( /*@observer@*/ constraintList p_s) ;
49 extern void constraintList_free (/*@only@*/ constraintList p_s) ;
54 extern cstring constraintList_print ( /*@observer@*/ constraintList s) /*@*/;
57 constraintList_printDetailed ( /*@observer@*/ constraintList s) /*@*/;
60 extern /*@only@*/ constraintList
61 constraintList_logicalOr ( /*@observer@*/ constraintList l1, /*@observer@*/ constraintList l2);
63 extern constraintList constraintList_preserveOrig (/*@returned@*/ constraintList c);
65 /*@constant int constraintListBASESIZE;@*/
67 # define constraintListBASESIZE SMALLBASESIZE
70 extern /*@only@*/ constraintList constraintList_doSRefFixBaseParam ( /*@observer@*/ constraintList preconditions, /*@observer@*/ exprNodeList arglist) /*@modifies preconditions@*/;
72 extern constraintList constraintList_togglePost (/*@returned@*/ constraintList c) /*@modifies c@*/;
74 extern /*@only@*/ constraintList constraintList_doSRefFixConstraintParam ( /*@only@*/ constraintList preconditions, /*@observer@*/ exprNodeList arglist) /*@modifies preconditions@*/;
76 extern constraintList getPostConditions (exprNode fcn, exprNodeList arglist, exprNode fcnCall) /*@*/;
78 /*@only@*/ constraintList constraintList_doFixResult ( /*@only@*/ constraintList postconditions, /*@observer@*/ exprNode fcnCall) /*@modifies postconditions@*/;
80 extern constraintList constraintList_addGeneratingExpr (/*@returned@*/ constraintList c, exprNode e) /*@modifies c@*/;
81 extern constraintList constraintList_makeFixedArrayConstraints (sRefSet p_s) ;
82 extern void constraintList_printErrorPostConditions (constraintList p_s, fileloc p_loc) ;
83 extern void constraintList_printError (constraintList p_s, fileloc p_loc) ;
86 # error "Multiple include"