1 #ifndef __constraintTerm_h__
3 #define __constraintTerm_h__
7 /*@exposed@*/ /*@dependent@*/ exprNode expr;
10 } constraintTermValue;
16 ERRORBADCONSTRAINTTERMTYPE,
21 struct _constraintTerm {
22 /*@only@*/ fileloc loc;
23 constraintTermValue value;
24 constraintTermType kind;
28 abst_typedef struct _constraintTerm * constraintTerm;
30 extern constraintTermType constraintTerm_getKind (constraintTerm) ;
31 extern /*@exposed@*/ sRef constraintTerm_getSRef (constraintTerm) ;
33 extern /*@falsenull@*/ bool constraintTerm_isDefined (constraintTerm p_e) /*@*/;
34 extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isUndefined (constraintTerm p_e) /*@*/ ;
35 extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isError (constraintTerm p_e) /*@*/ ;
37 /*@constant null constraintTerm constraintTerm_undefined; @*/
39 # define constraintTerm_undefined ((constraintTerm)NULL)
41 # define constraintTerm_isDefined(e) ((e) != constraintTerm_undefined)
42 # define constraintTerm_isUndefined(e) ((e) == constraintTerm_undefined)
43 # define constraintTerm_isError(e) ((e) == constraintTerm_undefined)
47 void constraintTerm_free (/*@only@*/ constraintTerm term);
49 constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
51 /*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@dependent@*/ exprNode e) /*@*/;
53 constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
55 bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
57 bool constraintTerm_canGetValue (constraintTerm term)/*@*/;
58 int constraintTerm_getValue (constraintTerm term) /*@*/;
60 fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
63 bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
65 cstring constraintTerm_print (constraintTerm term) /*@*/;
67 constraintTerm constraintTerm_makesRef (/*@temp@*/ /*@observer@*/ sRef s) /*@*/;
69 /*@unused@*/ bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
71 constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/;
73 constraintTerm constraintTerm_makeIntLiteral (int i) /*@*/;
75 bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/;
76 cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/;
79 constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
81 void constraintTerm_dump ( /*@observer@*/ constraintTerm t, FILE *f);
83 /*@only@*/ constraintTerm constraintTerm_undump ( FILE *f);
89 #error Multiple Include