typedef union
{
- exprNode expr;
- sRef sref;
+ /*@exposed@*/ exprNode expr;
+ /*@exposed@*/ sRef sref;
int intlit;
} constraintTermValue;
void constraintTermValue_copy (/*@out@*/ constraintTermValue src, constraintTermValue dst);
+/*@-macroassign*/
+
#define constraintTermValue_copy(dst, src) ((dst) = (src))
+/*@=macroassign*/
+
typedef enum
{
ERRORBADCONSTRAINTTERMTYPE,
} constraintTermType;
struct _constraintTerm {
- fileloc loc;
- constraintTermValue value;
+ /*@only@*/ fileloc loc;
+ constraintTermValue value;
constraintTermType kind;
};
abst_typedef struct _constraintTerm * constraintTerm;
+extern constraintTermType constraintTerm_getKind (constraintTerm) ;
+extern /*@exposed@*/ sRef constraintTerm_getSRef (constraintTerm) ;
+
+extern /*@falsenull@*/ bool constraintTerm_isDefined (constraintTerm p_e) /*@*/;
+extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isUndefined (constraintTerm p_e) /*@*/ ;
+extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isError (constraintTerm p_e) /*@*/ ;
+
+/*@constant null constraintTerm constraintTerm_undefined; @*/
+
+# define constraintTerm_undefined ((constraintTerm)NULL)
+# define constraintTerm_isDefined(e) ((e) != constraintTerm_undefined)
+# define constraintTerm_isUndefined(e) ((e) == constraintTerm_undefined)
+# define constraintTerm_isError(e) ((e) == constraintTerm_undefined)
+
+
+
+void constraintTerm_free (/*@only@*/ constraintTerm term);
constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
-constraintTerm constraintTerm_makeExprNode (/*@only@*/ exprNode e) /*@*/;
+/*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@exposed@*/ exprNode e) /*@*/;
constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
-constraintTerm exprNode_makeConstraintTerm ( exprNode e) /*@*/;
+//constraintTerm exprNode_makeConstraintTerm ( exprNode e) /*@*/;
-bool constraintTerm_same (constraintTerm term1, constraintTerm term2) /*@*/;
+//bool constraintTerm_same (constraintTerm term1, constraintTerm term2) /*@*/;
bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
-constraintTerm constraintTerm_makeMaxSetexpr (exprNode e) /*@*/;
+//constraintTerm constraintTerm_makeMaxSetexpr (exprNode e) /*@*/;
-constraintTerm constraintTerm_makeMinSetexpr (exprNode e) /*@*/;
+//constraintTerm constraintTerm_makeMinSetexpr (exprNode e) /*@*/;
-constraintTerm constraintTerm_makeMaxReadexpr (exprNode e) /*@*/;
+//constraintTerm constraintTerm_makeMaxReadexpr (exprNode e) /*@*/;
-constraintTerm constraintTerm_makeMinReadexpr (exprNode e) /*@*/;
+//constraintTerm constraintTerm_makeMinReadexpr (exprNode e) /*@*/;
-constraintTerm constraintTerm_makeValueexpr (exprNode e) /*@*/;
+//constraintTerm constraintTerm_makeValueexpr (exprNode e) /*@*/;
-constraintTerm intLit_makeConstraintTerm (int i) /*@*/;
+//constraintTerm intLit_makeConstraintTerm (int i) /*@*/;
-constraintTerm constraintTerm_makeIntLitValue (int i) /*@*/;
+//constraintTerm constraintTerm_makeIntLitValue (int i) /*@*/;
bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
cstring constraintTerm_print (constraintTerm term) /*@*/;
-constraintTerm constraintTerm_makesRef (/*@only@*/ sRef s) /*@*/;
+constraintTerm constraintTerm_makesRef (/*@exposed@*/ sRef s) /*@*/;
-bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
+/*@unused@*/ bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/;
bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/;
cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/;
-constraintExpr
-constraintExpr_doFixResult (constraintExpr e, exprNode fcnCall) /*@modifies e @*/;
+
+constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
#else