# include "uentry.h"
# include "sRef.h"
# include "guardSet.h"
+# include "constraintTerm.h"
+# include "constraintExprData.h"
+# include "constraintExpr.h"
# include "constraint.h"
+# include "constraintList.h"
# include "exprNode.h"
# include "exprData.h"
# include "typeIdSet.h"
}
arithType;
-//abst_typedef struct constr_ * constr;
-
-
struct _constraint {
constraint orig;
constraint or;
exprNode generatingExpr;
} ;
-abst_typedef struct _constraintTerm * constraintTerm;
+/*@constant null constraint constraint_undefined; @*/
-//constraint constraint_create (exprNode e1, exprNode e2, arithType restriction, constraintType kind);
+# define constraint_undefined ((constraint)NULL)
+extern /*@falsenull@*/ bool constraint_isDefined (constraint p_e) /*@*/ ;
+extern /*@unused@*/ /*@truenull@*/ bool constraint_isUndefined (constraint p_e) /*@*/ ;
+extern /*@truenull@*/ bool constraint_isError (constraint p_e) /*@*/ ;
-constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant);
+# define constraint_isDefined(e) ((e) != constraint_undefined)
+# define constraint_isUndefined(e) ((e) == constraint_undefined)
+# define constraint_isError(e) ((e) == constraint_undefined)
+constraint makeConstraintParse (sRef x, lltok relOp, exprNode cconstant);
constraint constraint_createReadSafe (exprNode p_e1, exprNode p_e2);
/*@-czechfcns*/
bool constraint_resolve (/*@unused@*/ constraint c);
-/*@out@*/ constraintTerm new_constraintTermExpr (void);
-/*@special@*/ constraintExpr makeConstraintExpr (/*@only@*/ /*@notnull@*/ constraintTerm term)
- /*@post:isnull result->expr@*/
- /*@post:notnull result->t1@*/
- /*@defines result->expr, result->t1, result->c1@, result->op*/;
+///*@special@*/ constraintExpr makeConstraintExpr (/*@only@*/ /*@notnull@*/ constraintTerm term)
+// /*@post:isnull result->expr@*/
+// /*@post:notnull result->t1@*/
+// /*@defines result->expr, result->t1, result->c1@, result->op*/;
constraintExpr makeConstraintExprIntlit (int p_i);
constraintList exprNode_traversRequiresConstraints (exprNode e);
constraintList exprNode_traversEnsuresConstraints (exprNode e);
+/*@notnull@*/ constraint constraint_makeNew (void) /*@*/;
/*@=czechfcns*/
//#warning take this out
-#include "constraintList.h"
-#include "constraintExpr.h"
-#include "constraintTerm.h"
#include "constraintResolve.h"
#include "constraintOutput.h"
+#else
+
+#error Multiple include
+
#endif
#define __constraintExpr_h__
-typedef union constraintTermValue_
-{
- exprNode expr;
- sRef sref;
- int intlit;
-} constraintTermValue;
-
-typedef enum
-{
- ERRORBADCONSTRAINTTERMTYPE,
- EXPRNODE, SREF,
- INTLITERAL
-} constraintTermType;
-
-struct _constraintTerm {
- fileloc loc;
- constraintTermValue value;
- constraintTermType kind;
-};
-
-
-typedef enum
-{
- PLUS,
- MINUS
-}
-constraintExprBinaryOpKind;
-
-typedef enum
-{
- VALUE, CALLSAFE,
- MAXSET, MINSET, MAXREAD, MINREAD,
- NULLTERMINATED,
- UNDEFINED
-}
-constraintExprUnaryOpKind;
-
typedef enum
{
binaryexpr,
}
constraintExprKind;
-typedef struct constraintExprBinaryOp_
-{
- constraintExpr expr1;
- constraintExprBinaryOpKind binaryOp;
- constraintExpr expr2;
-} constraintExprBinaryOp;
+struct constraintExpr_ {
+ constraintExprKind kind;
+ constraintExprData data;
+};
-typedef struct constraintExprUnaryOp_
-{
- constraintExpr expr;
- constraintExprUnaryOpKind unaryOp;
-} constraintExprUnaryOp;
+/*@constant null constraintExpr constraintExpr_undefined; @*/
+# define constraintExpr_undefined ((constraintExpr)NULL)
+extern /*@falsenull@*/ bool constraintExpr_isDefined (constraintExpr p_e) /*@*/ ;
+extern /*@unused@*/ /*@truenull@*/ bool constraintExpr_isUndefined (constraintExpr p_e) /*@*/ ;
+extern /*@truenull@*/ bool constraintExpr_isError (constraintExpr p_e) /*@*/ ;
-typedef union constraintExprData_
-{
- constraintExprBinaryOp binaryOp;
- constraintExprUnaryOp unaryOp;
- constraintTerm term;
-} *constraintExprData;
+# define constraintExpr_isDefined(e) ((e) != constraintExpr_undefined)
+# define constraintExpr_isUndefined(e) ((e) == constraintExpr_undefined)
+# define constraintExpr_isError(e) ((e) == constraintExpr_undefined)
-struct constraintExpr_ {
- constraintExprKind kind;
- constraintExprData data;
-};
-# define constraintExpr_undefined ((constraintExpr)NULL)
+/*@constant null constraintExprData constraintExprData_undefined; @*/
+# define constraintExprData_undefined ((constraintExprData)NULL)
+
+extern /*@falsenull@*/ bool constraintExprData_isDefined (constraintExprData p_e) /*@*/ ;
+extern /*@unused@*/ /*@truenull@*/ bool constraintExprData_isUndefined (constraintExprData p_e) /*@*/ ;
+extern /*@truenull@*/ bool constraintExprData_isError (constraintExprData p_e) /*@*/ ;
+
+# define constraintExprData_isDefined(e) ((e) != constraintExprData_undefined)
+# define constraintExprData_isUndefined(e) ((e) == constraintExprData_undefined)
+# define constraintExprData_isError(e) ((e) == constraintExprData_undefined)
-//constraintTerm constraintTerm_copy (constraintTerm term);
int constraintExpr_getValue (constraintExpr expr) /*@*/;
-constraintExpr constraintExpr_setFileloc (constraintExpr expr, fileloc loc);
+constraintExpr constraintExpr_setFileloc (constraintExpr expr, fileloc loc) /*@modifies expr@*/;
-constraintExpr constraintExpr_copy (constraintExpr expr);
+constraintExpr constraintExpr_copy (constraintExpr expr) /*@*/;
cstring constraintExpr_unparse (constraintExpr ex) /*@*/;
extern cstring constraintExpr_print (constraintExpr expr) /*@*/;
-bool constraintExpr_similar (constraintExpr expr1, constraintExpr expr2);
-bool constraintExpr_same (constraintExpr expr1, constraintExpr expr2);
-constraintExpr constraintExpr_searchandreplace (constraintExpr c, constraintExpr old, constraintExpr new );
-bool constraintExpr_canGetValue (constraintExpr expr);
+bool constraintExpr_similar (constraintExpr expr1, constraintExpr expr2) /*@*/;
+bool constraintExpr_same (constraintExpr expr1, constraintExpr expr2) /*@*/;
+constraintExpr constraintExpr_searchandreplace (constraintExpr c, constraintExpr old, constraintExpr new ) /*@modifies c@*/;
+bool constraintExpr_canGetValue (constraintExpr expr) /*@*/;
-int constraintExpr_compare (constraintExpr expr1, constraintExpr expr2);
+int constraintExpr_compare (constraintExpr expr1, constraintExpr expr2) /*@*/;
-constraintExpr constraintExpr_makeValueInt (int i);
+//constraintExpr constraintExpr_makeValueInt (int i);
constraintExpr constraintExpr_makeIntLiteral (int i);
constraintExpr constraintExpr_makeMaxReadExpr (exprNode expr);
-constraintExpr constraintExpr_makeMinSetExpr (exprNode expr);
-
-constraintExpr constraintExpr_makeMinReadExpr (exprNode expr);
-
constraintExpr constraintExpr_makeIncConstraintExpr (constraintExpr expr);
constraintExpr constraintExpr_makeDecConstraintExpr (constraintExpr expr);
-constraintExpr constraintExpr_simplify (constraintExpr c);
-
-
-constraintExpr constraintExpr_solveBinaryExpr (constraintExpr lexpr, constraintExpr expr);
-
-bool constraintExpr_search (constraintExpr c, constraintExpr old);
-/* jjjkkkk */
-
-constraintExprData constraintExprData_copy (constraintExprData data, constraintExprKind kind);
-
-
-constraintExprData constraintExprData_termSetTerm (/*@out@*/ constraintExprData data, constraintTerm term);
-
-constraintTerm constraintExprData_termGetTerm (constraintExprData data) /*@*/;
-
-constraintExprUnaryOpKind constraintExprData_unaryExprGetOp (constraintExprData data) /*@*/;
+constraintExpr constraintExpr_simplify (constraintExpr c) /*@modifies c@*/;
-constraintExpr constraintExprData_unaryExprGetExpr (constraintExprData data) /*@*/;
+constraintExpr constraintExpr_solveBinaryExpr (constraintExpr lexpr, constraintExpr expr) /*@modifies lexpr@*/;
-constraintExprData constraintExprData_unaryExprSetOp (constraintExprData data, constraintExprUnaryOpKind op);
+bool constraintExpr_search (constraintExpr c, constraintExpr old) /*@*/;
-
-constraintExprData constraintExprData_unaryExprSetExpr (constraintExprData data, constraintExpr expr);
-
-
-constraintExprBinaryOpKind constraintExprData_binaryExprGetOp (constraintExprData data) /*@*/;
-
-constraintExpr constraintExprData_binaryExprGetExpr1 (constraintExprData data)/*@*/;
-
-constraintExpr constraintExprData_binaryExprGetExpr2 (constraintExprData data)/*@*/;
-
-constraintExprData constraintExprData_binaryExprSetExpr1 (constraintExprData data, constraintExpr expr);
-
-constraintExprData constraintExprData_binaryExprSetExpr2 (constraintExprData data, constraintExpr expr);
-
-constraintExprData constraintExprData_binaryExprSetOp (constraintExprData data, constraintExprBinaryOpKind op);
fileloc constraintExpr_getFileloc (constraintExpr expr);
constraintExpr constraintExpr_makeBinaryOpConstraintExprIntLiteral (constraintExpr expr, int literal);
bool constraintExpr_hasMaxSet (constraintExpr expr);
-constraintExpr constraintExpr_propagateConstants (constraintExpr expr,
- /*@out@*/ bool * propagate,
- /*@out@*/ int *literal);
+//static constraintExpr constraintExpr_propagateConstants (constraintExpr expr,
+// /*@out@*/ bool * propagate,
+// /*@out@*/ int *literal);
constraintExpr constraintExpr_makeSRefMaxRead(sRef s);
+constraintTerm constraintTerm_doSRefFixBaseParam (constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
+
+constraintExpr
+constraintExpr_doSRefFixConstraintParam (constraintExpr e, exprNodeList arglist) /*@modifies e@*/;
+
+
+#else
+
+# error "Multiple include"
+
#endif
# define end_constraintList_elements }}
-extern /*@only@*/ constraintList constraintList_new(void);
-extern constraintList constraintList_add (/*@returned@*/ constraintList p_s, /*@only@*/ constraint p_el) ;
+extern /*@only@*/ constraintList constraintList_makeNew(void) /*@*/;
+extern constraintList constraintList_add (/*@returned@*/ constraintList p_s, /*@only@*/ constraint p_el) /*@modifies p_s@*/ ;
-extern constraintList constraintList_addList (/*@returned@*/ constraintList s, /*@only@*/constraintList new);
+extern constraintList constraintList_addList (/*@returned@*/ constraintList p_s, /*@only@*/constraintList new) /*@modifies p_s@*/ ;
extern constraintList constraintList_copy (constraintList p_s) /*@*/ ;
-extern cstring constraintList_print (constraintList s);
+extern cstring constraintList_print (constraintList s) /*@*/;
extern cstring
-constraintList_printDetailed (constraintList s);
+constraintList_printDetailed (constraintList s) /*@*/;
extern constraintList
constraintList_logicalOr (constraintList l1, constraintList l2);
-extern constraintList constraintList_preserveOrig (constraintList c);
+extern constraintList constraintList_preserveOrig (/*@returned@*/ constraintList c);
/*@constant int constraintListBASESIZE;@*/
-extern constraintList constraintList_doSRefFixBaseParam (constraintList preconditions, exprNodeList arglist);
+extern constraintList constraintList_doSRefFixBaseParam (constraintList preconditions, exprNodeList arglist) /*@modifies preconditions@*/;
-extern constraintList constraintList_togglePost (constraintList c);
+extern constraintList constraintList_togglePost (/*@returned@*/ constraintList c) /*@modifies c@*/;
-extern constraintList constraintList_doSRefFixConstraintParam (constraintList preconditions, exprNodeList arglist);
+extern constraintList constraintList_doSRefFixConstraintParam (/*@returned@*/ constraintList preconditions, exprNodeList arglist) /*@modifies preconditions@*/;
-extern constraintList getPostConditions (exprNode fcn, exprNodeList arglist, exprNode fcnCall);
+extern constraintList getPostConditions (exprNode fcn, exprNodeList arglist, exprNode fcnCall) /*@*/;
-constraintList constraintList_doFixResult (constraintList postconditions, exprNode fcnCall);
+constraintList constraintList_doFixResult (/*@returned@*/ constraintList postconditions, exprNode fcnCall) /*@modifies postconditions@*/;
-constraintList constraintList_addGeneratingExpr (constraintList c, exprNode e);
+constraintList constraintList_addGeneratingExpr (/*@returned@*/ constraintList c, exprNode e) /*@modifies c@*/;
# define constraintListBASESIZE SMALLBASESIZE
# else
extern /*@falsenull@*/ bool constraintList_isDefined (constraintList p_t);
# define constraintList_isDefined(s) ((s) != (constraintList) 0)
-extern /*@only@*/ constraintList constraintList_new(void);
+extern /*@only@*/ constraintList constraintList_makeNew(void);
extern constraintList constraintList_push (/*@returned@*/ constraintList p_s,
/*@keep@*/ constraint p_el) ;
-
#ifndef __constraintTerm_h__
#define __constraintTerm_h__
+typedef union
+{
+ exprNode expr;
+ sRef sref;
+ int intlit;
+} constraintTermValue;
-constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term);
+void constraintTermValue_copy (/*@out@*/ constraintTermValue src, constraintTermValue dst);
-constraintTerm constraintTerm_makeExprNode (/*@only@*/ exprNode e);
+#define constraintTermValue_copy(dst, src) ((dst) = (src))
-constraintTerm constraintTerm_copy (constraintTerm term);
+typedef enum
+{
+ ERRORBADCONSTRAINTTERMTYPE,
+ EXPRNODE, SREF,
+ INTLITERAL
+} constraintTermType;
-constraintTerm exprNode_makeConstraintTerm ( exprNode e);
+struct _constraintTerm {
+ fileloc loc;
+ constraintTermValue value;
+ constraintTermType kind;
+};
-bool constraintTerm_same (constraintTerm term1, constraintTerm term2);
+abst_typedef struct _constraintTerm * constraintTerm;
-bool constraintTerm_similar (constraintTerm term1, constraintTerm term2);
-bool constraintTerm_canGetValue (constraintTerm term);
-int constraintTerm_getValue (constraintTerm term);
-fileloc constraintTerm_getFileloc (constraintTerm t);
+constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
-constraintTerm constraintTerm_makeMaxSetexpr (exprNode e);
+constraintTerm constraintTerm_makeExprNode (/*@only@*/ exprNode e) /*@*/;
-constraintTerm constraintTerm_makeMinSetexpr (exprNode e);
+constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
-constraintTerm constraintTerm_makeMaxReadexpr (exprNode e);
+constraintTerm exprNode_makeConstraintTerm ( exprNode e) /*@*/;
-constraintTerm constraintTerm_makeMinReadexpr (exprNode e);
+bool constraintTerm_same (constraintTerm term1, constraintTerm term2) /*@*/;
-constraintTerm constraintTerm_makeValueexpr (exprNode e);
+bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
-constraintTerm intLit_makeConstraintTerm (int i);
+bool constraintTerm_canGetValue (constraintTerm term)/*@*/;
+int constraintTerm_getValue (constraintTerm term) /*@*/;
-constraintTerm constraintTerm_makeIntLitValue (int i);
+fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
-bool constraintTerm_isIntLiteral (constraintTerm term);
+constraintTerm constraintTerm_makeMaxSetexpr (exprNode e) /*@*/;
-cstring constraintTerm_print (constraintTerm term);
+constraintTerm constraintTerm_makeMinSetexpr (exprNode e) /*@*/;
-constraintTerm constraintTerm_makesRef (/*@only@*/ sRef s);
+constraintTerm constraintTerm_makeMaxReadexpr (exprNode e) /*@*/;
-bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2);
+constraintTerm constraintTerm_makeMinReadexpr (exprNode e) /*@*/;
+constraintTerm constraintTerm_makeValueexpr (exprNode e) /*@*/;
-constraintTerm constraintTerm_doSRefFixBaseParam (constraintTerm term, exprNodeList arglist);
+constraintTerm intLit_makeConstraintTerm (int i) /*@*/;
-constraintExpr
-constraintTerm_doSRefFixConstraintParam (constraintExpr e, exprNodeList arglist);
+constraintTerm constraintTerm_makeIntLitValue (int i) /*@*/;
-constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc);
+bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
-constraintTerm constraintTerm_makeIntLiteral (int i);
+cstring constraintTerm_print (constraintTerm term) /*@*/;
-bool constraintTerm_isStringLiteral (constraintTerm c);
-cstring constraintTerm_getStringLiteral (constraintTerm c);
+constraintTerm constraintTerm_makesRef (/*@only@*/ sRef s) /*@*/;
-constraintExpr
-constraintTerm_doFixResult (constraintExpr e, exprNode fcnCall);
+bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
-#endif
+constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/;
+constraintTerm constraintTerm_makeIntLiteral (int i) /*@*/;
+bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/;
+cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/;
+constraintExpr
+constraintExpr_doFixResult (constraintExpr e, exprNode fcnCall) /*@modifies e @*/;
+#else
+#error Multiple Include
+#endif
/* DRL modified 9 26 00 */
-abst_typedef struct constraintExpr_ * constraintExpr;
+abst_typedef /*@null@*/ struct constraintExpr_ * constraintExpr;
/*@-cppnames@*/
typedef int bool;
/*@constant observer char *LCL_PARSE_VERSION;@*/
# define LCL_PARSE_VERSION "LCLint 2.5q"
/*@constant observer char *LCL_COMPILE;@*/
-# define LCL_COMPILE "Compiled using gcc28 -DSTDC_HEADERS=1 -Wall -g -pedantic on FreeBSD shankly.cs.virginia.edu 3.2-RELEASE FreeBSD 3.2-RELEASE #0: Tue May 18 04:05:08 GMT 1999 jkh@cathair:/usr/src/sys/compile/GENERIC i386 by drl7x"
+# define LCL_COMPILE "Compiled using /opt/GCC281/bin/gcc -DSTDC_HEADERS=1 -g -Wall -pedantic on SunOS mamba.cs.Virginia.EDU 5.6 Generic_105181-09 sun4u sparc SUNW,Ultra-60 by drl7x"
/*@constant observer char *LCL_PARSE_VERSION;@*/
# define LCL_PARSE_VERSION "LCLint 2.5q"
/*@constant observer char *LCL_COMPILE;@*/
-# define LCL_COMPILE "Compiled using gcc28 -DSTDC_HEADERS=1 -Wall -g -pedantic on FreeBSD shankly.cs.virginia.edu 3.2-RELEASE FreeBSD 3.2-RELEASE #0: Tue May 18 04:05:08 GMT 1999 jkh@cathair:/usr/src/sys/compile/GENERIC i386 by drl7x"
+# define LCL_COMPILE "Compiled using /opt/GCC281/bin/gcc -DSTDC_HEADERS=1 -g -Wall -pedantic on SunOS mamba.cs.Virginia.EDU 5.6 Generic_105181-09 sun4u sparc SUNW,Ultra-60 by drl7x"