X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/93307a76942c3d0e463af62442eef5a542ebdfb2..f6099dac655d3fc5409f54302dd3b5c1b6be6ac6:/src/Headers/constraintTerm.h diff --git a/src/Headers/constraintTerm.h b/src/Headers/constraintTerm.h index 95ab19a..673de12 100644 --- a/src/Headers/constraintTerm.h +++ b/src/Headers/constraintTerm.h @@ -1,54 +1,96 @@ - #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