-
#ifndef __constraintTerm_h__
#define __constraintTerm_h__
-constraintTerm constraintTerm_simplify (constraintTerm term);
+typedef union
+{
+ /*@exposed@*/ /*@dependent@*/ exprNode expr;
+ /*@only@*/ sRef sref;
+ long intlit;
+} constraintTermValue;
-constraintTerm constraintTerm_makeExprNode (/*@only@*/ exprNode e);
+/*@-namechecks@*/
-constraintTerm constraintTerm_copy (constraintTerm term);
+typedef enum
+{
+ ERRORBADCONSTRAINTTERMTYPE,
+ EXPRNODE, SREF,
+ INTLITERAL
+} constraintTermType;
-constraintTerm exprNode_makeConstraintTerm ( exprNode e);
+struct _constraintTerm {
+ /*@only@*/ fileloc loc;
+ constraintTermValue value;
+ constraintTermType kind;
+} ;
+abst_typedef struct _constraintTerm *constraintTerm;
-bool constraintTerm_same (constraintTerm term1, constraintTerm term2);
+/*@i311 shouldn't need this...never null */
+extern bool constraintTerm_isDefined (constraintTerm t) /*@*/ ;
-bool constraintTerm_similar (constraintTerm term1, constraintTerm term2);
+extern constraintTermType constraintTerm_getKind (constraintTerm) ;
+extern /*@exposed@*/ sRef constraintTerm_getSRef (constraintTerm) ;
-bool constraintTerm_canGetValue (constraintTerm term);
-int constraintTerm_getValue (constraintTerm term);
+void constraintTerm_free (/*@only@*/ constraintTerm term);
-fileloc constraintTerm_getFileloc (constraintTerm t);
+constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
-constraintTerm constraintTerm_makeMaxSetexpr (exprNode e);
+/*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@dependent@*/ exprNode e) /*@*/;
-constraintTerm constraintTerm_makeMinSetexpr (exprNode e);
+constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
-constraintTerm constraintTerm_makeMaxReadexpr (exprNode e);
+bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
-constraintTerm constraintTerm_makeMinReadexpr (exprNode e);
+bool constraintTerm_canGetValue (constraintTerm term)/*@*/;
+long constraintTerm_getValue (constraintTerm term) /*@*/;
-constraintTerm constraintTerm_makeValueexpr (exprNode e);
+fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
-constraintTerm intLit_makeConstraintTerm (int i);
-constraintTerm constraintTerm_makeIntLitValue (int i);
+bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
-bool constraintTerm_isIntLiteral (constraintTerm term);
+cstring constraintTerm_print (constraintTerm term) /*@*/;
-cstring constraintTerm_print (constraintTerm term);
+constraintTerm constraintTerm_makesRef (/*@temp@*/ /*@observer@*/ sRef s) /*@*/;
-constraintTerm constraintTerm_makesRef (/*@only@*/ sRef s);
+/*@unused@*/ bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
-bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2);
+constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/;
+constraintTerm constraintTerm_makeIntLiteral (long i) /*@*/;
-constraintTerm constraintTerm_doSRefFixBaseParam (constraintTerm term, exprNodeList arglist);
-#endif
+bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/;
+cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/;
+
+
+constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
+
+void constraintTerm_dump ( /*@observer@*/ constraintTerm t, FILE *f);
+
+/*@only@*/ constraintTerm constraintTerm_undump ( FILE *f);
+
+bool constraintTerm_isInitBlock (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/;
+int constraintTerm_getInitBlockLength (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/;
+bool constraintTerm_isExprNode (/*@observer@*/ /*@temp@*/ constraintTerm c) /*@*/;
+extern ctype constraintTerm_getCType (constraintTerm term);
+/*@exposed@*/ exprNode constraintTerm_getExprNode (constraintTerm t);
+/*@exposed@*/ sRef constraintTerm_getsRef (constraintTerm t);
+
+
+/*@=namechecks@*/
+
+/*drl added 12/19/2002*/
+bool constraintTerm_isConstantOnly ( constraintTerm p_term );
+
+#else
+
+#error Multiple Include
+
+#endif