binaryexpr,
unaryExpr,
term
-}
-constraintExprKind;
+} constraintExprKind;
struct s_constraintExpr {
constraintExprKind kind;
+ bool ct; /*changed type */
+ ctype origType;
constraintExprData data;
};
/*@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 /*@unused@*/ /*@truenull@*/ bool constraintExpr_isError (constraintExpr p_e) /*@*/ ;
+extern /*@falsewhennull@*/ bool constraintExpr_isDefined (constraintExpr p_e) /*@*/ ;
+extern /*@unused@*/ /*@nullwhentrue@*/ bool constraintExpr_isUndefined (constraintExpr p_e) /*@*/ ;
+extern /*@unused@*/ /*@nullwhentrue@*/ bool constraintExpr_isError (constraintExpr p_e) /*@*/ ;
# define constraintExpr_isDefined(e) ((e) != constraintExpr_undefined)
# define constraintExpr_isUndefined(e) ((e) == constraintExpr_undefined)
void constraintExpr_free ( /*@only@*/ constraintExpr p_expr);
-int constraintExpr_getValue (constraintExpr p_expr) /*@*/;
-
constraintExpr constraintExpr_setFileloc (/*@returned@*/ constraintExpr p_c, fileloc p_loc) /*@modifies p_c@*/;
constraintExpr constraintExpr_copy (constraintExpr p_expr) /*@*/;
bool constraintExpr_similar (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
bool constraintExpr_same (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
/*@only@*/ constraintExpr constraintExpr_searchandreplace (/*@only@*/ /*@unique@*/ constraintExpr p_c, /*@temp@*/ /*@observer@*/ constraintExpr p_old, /*@temp@*/ /*@observer@*/ constraintExpr p_newExpr ) /*@modifies p_c@*/;
+
bool constraintExpr_canGetValue (constraintExpr p_expr) /*@*/;
+long constraintExpr_getValue (constraintExpr p_expr) /*@*/;
int constraintExpr_compare (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/;
-//constraintExpr constraintExpr_makeValueInt (int i);
+/* constraintExpr constraintExpr_makeValueInt (int i); */
-/*@only@*/ constraintExpr constraintExpr_makeIntLiteral (int p_i);
+/*@only@*/ /*@notnull@*/constraintExpr constraintExpr_makeIntLiteral (long p_i);
/*@only@*/ constraintExpr constraintExpr_makeValueExpr (/*@exposed@*/ exprNode p_expr);
bool constraintExpr_search (/*@observer@*/ /*@temp@*/ constraintExpr p_c, /*@observer@*/ /*@temp@*/ constraintExpr p_old);
-/*@only@*/ fileloc constraintExpr_getFileloc (constraintExpr p_expr);
+/*@only@*/ fileloc constraintExpr_loc (constraintExpr p_expr);
-/*@only@*/ constraintExpr constraintExpr_makeSRefMaxset ( /*@temp@*/ /*@oberver@*/ sRef p_s);
+/*@only@*/ constraintExpr constraintExpr_makeSRefMaxset ( /*@temp@*/ /*@observer@*/ sRef p_s);
/*@only@*/ constraintExpr constraintExpr_makeSRefMaxRead(/*@temp@*/ /*@observer@*/ sRef p_s);
/*@only@*/ constraintExpr constraintExpr_doFixResult (/*@only@*/ constraintExpr p_expr, /*@observer@*/ exprNode p_fcnCall);
-bool constraintExpr_isLit (constraintExpr p_expr);
+/*@falsewhennull@*/ bool constraintExpr_isLit (constraintExpr p_expr) /*@*/ ;
/*@only@*/ constraintExpr constraintExpr_makeAddExpr (/*@only@*/ constraintExpr p_expr, /*@only@*/ constraintExpr p_addent);
/*@out@*/ bool * p_propagate,
/*@out@*/ int *p_literal);
-bool constraintExpr_isBinaryExpr (/*@observer@*/ /*@temp@*/ constraintExpr p_c);
+/*@falsewhennull@*/ bool constraintExpr_isBinaryExpr (/*@observer@*/ /*@temp@*/ constraintExpr p_c) /*@*/ ;
extern void constraintExpr_dump (/*@observer@*/ /*@temp@*/ constraintExpr p_expr, FILE *p_f);
extern /*@only@*/ constraintExpr constraintExpr_undump (FILE *p_f);
-#else
+extern /*@only@*/ constraintExpr constraintExpr_makeTermExprNode (/*@exposed@*/ exprNode p_e) ;
+/* drl added 8/8/001*/
+bool constraintExpr_isTerm (/*@observer@*/ /*@temp@*/ constraintExpr p_c);
+
+/* drl added 8/8/001*/
+/*@observer@*/ /*@temp@*/ constraintTerm constraintExpr_getTerm ( /*@temp@*/ /*@observer@*/ constraintExpr p_c);
+
+/* drl added 8/8/001*/
+int constraintExpr_getDepth (/*@observer@*/ /*@temp@*/ constraintExpr p_ex);
-# error "Multiple include"
+/*drl 1/6/2001: I didn't think these functions were solid enough to include in the stable release of splint.*/
+/* drl added 12/30/001*/
+/* extern / *@only@* / constraintExpr constraintExpr_doSRefFixInvarConstraint (/ *@only@* / constraintExpr p_expr, sRef p_s, ctype p_ct); */
+
+
+
+/*drl added 12/19 */
+bool constraintExpr_isConstantOnly ( constraintExpr p_e );
+
+#else
+# error "Multiple include"
#endif