X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/92c4a78635fd7baf52eb7ede90b735be84089dd7..a9ec328054b628447830161535f4915f715f49cd:/src/Headers/constraintTerm.h diff --git a/src/Headers/constraintTerm.h b/src/Headers/constraintTerm.h index 9eaf7e8..1ecd622 100644 --- a/src/Headers/constraintTerm.h +++ b/src/Headers/constraintTerm.h @@ -1,48 +1,83 @@ - #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); +typedef enum +{ + CTT_ERRORBADCONSTRAINTTERMTYPE, + CTT_EXPR, + CTT_SREF, + CTT_INTLITERAL +} constraintTermType; -constraintTerm constraintTerm_copy (constraintTerm term); +struct s_constraintTerm { + /*@only@*/ fileloc loc; + constraintTermValue value; + constraintTermType kind; +} ; -constraintTerm exprNode_makeConstraintTerm ( exprNode e); +abst_typedef struct s_constraintTerm *constraintTerm; -bool constraintTerm_same (constraintTerm term1, constraintTerm term2); +extern bool constraintTerm_isDefined (constraintTerm p_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 p_term); -fileloc constraintTerm_getFileloc (constraintTerm t); +constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm p_term) /*@modifies p_term@*/ ; -constraintTerm constraintTerm_makeMaxSetexpr (exprNode e); +/*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@dependent@*/ exprNode p_e) /*@*/; -constraintTerm constraintTerm_makeMinSetexpr (exprNode e); +constraintTerm constraintTerm_copy (constraintTerm p_term) /*@*/; -constraintTerm constraintTerm_makeMaxReadexpr (exprNode e); +bool constraintTerm_similar (constraintTerm p_term1, constraintTerm p_term2) /*@*/; -constraintTerm constraintTerm_makeMinReadexpr (exprNode e); +extern bool constraintTerm_canGetValue (constraintTerm p_term)/*@*/; +extern long constraintTerm_getValue (constraintTerm p_term) /*@*/; +extern void constraintTerm_setValue (constraintTerm p_term, long p_value) /*@modifies p_term@*/; -constraintTerm constraintTerm_makeValueexpr (exprNode e); +extern fileloc constraintTerm_getFileloc (constraintTerm p_t) /*@*/; -constraintTerm intLit_makeConstraintTerm (int i); +extern bool constraintTerm_isIntLiteral (constraintTerm p_term) /*@*/; -constraintTerm constraintTerm_makeIntLitValue (int i); +extern constraintTerm constraintTerm_makesRef (/*@temp@*/ /*@observer@*/ sRef p_s) /*@*/; -bool constraintTerm_isIntLiteral (constraintTerm term); +/*@unused@*/ bool constraintTerm_probSame (constraintTerm p_term1, constraintTerm p_term2) /*@*/; -cstring constraintTerm_print (constraintTerm term); +constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm p_term, fileloc p_loc) /*@modifies p_term@*/; -#endif +constraintTerm constraintTerm_makeIntLiteral (long p_i) /*@*/; +bool constraintTerm_isStringLiteral (constraintTerm p_c) /*@*/; +cstring constraintTerm_getStringLiteral (constraintTerm p_c) /*@*/; +constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm p_term, exprNodeList p_arglist) /*@modifies p_term@*/; +extern cstring constraintTerm_unparse (constraintTerm) /*@*/ ; +extern void constraintTerm_dump ( /*@observer@*/ constraintTerm p_t, FILE * p_f); +extern /*@only@*/ constraintTerm constraintTerm_undump ( FILE * p_f); +extern bool constraintTerm_isInitBlock (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/; +extern int constraintTerm_getInitBlockLength (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/; +extern bool constraintTerm_isExprNode (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/; +extern ctype constraintTerm_getCType (constraintTerm p_term); +extern /*@exposed@*/ exprNode constraintTerm_getExprNode (constraintTerm p_t); +extern /*@exposed@*/ sRef constraintTerm_getsRef (constraintTerm p_t); + +/*drl added 12/19/2002*/ +extern bool constraintTerm_isConstantOnly (constraintTerm p_term); + +#else +#error "Multiple Include!" +#endif