]> andersk Git - splint.git/blobdiff - src/Headers/constraintTerm.h
Fixed bug caused by free the null terminated stuff (bbufinfo) in uvinfo_free
[splint.git] / src / Headers / constraintTerm.h
index 95ab19af7a2476af567417cd923272ebb24c1593..50f4583ac54cd11a807a78be02358fd0e6d31a4a 100644 (file)
@@ -1,54 +1,91 @@
-
 #ifndef __constraintTerm_h__
 
 #define __constraintTerm_h__
 
-constraintTerm constraintTerm_simplify (constraintTerm term);
+typedef union
+{
+  /*@exposed@*/ /*@dependent@*/ exprNode expr;
+  /*@only@*/  sRef     sref;
+  int      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;
+};
 
 
-bool constraintTerm_same (constraintTerm term1, constraintTerm term2);
+abst_typedef struct _constraintTerm * constraintTerm;
 
-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);
+extern /*@falsenull@*/ bool constraintTerm_isDefined (constraintTerm p_e) /*@*/;
+extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isUndefined (constraintTerm p_e) /*@*/ ;
+extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isError (constraintTerm p_e) /*@*/ ;
 
-fileloc constraintTerm_getFileloc (constraintTerm t);
+/*@constant null constraintTerm constraintTerm_undefined; @*/
 
-constraintTerm constraintTerm_makeMaxSetexpr (exprNode e);
+# define constraintTerm_undefined ((constraintTerm)NULL)
 
-constraintTerm constraintTerm_makeMinSetexpr (exprNode e);
+# define constraintTerm_isDefined(e)        ((e) != constraintTerm_undefined)
+# define constraintTerm_isUndefined(e)      ((e) == constraintTerm_undefined)
+# define constraintTerm_isError(e)          ((e) == constraintTerm_undefined)
 
-constraintTerm constraintTerm_makeMaxReadexpr (exprNode e);
 
-constraintTerm constraintTerm_makeMinReadexpr (exprNode e);
 
-constraintTerm constraintTerm_makeValueexpr (exprNode e);
+void constraintTerm_free (/*@only@*/ constraintTerm term);
 
-constraintTerm intLit_makeConstraintTerm (int i);
+constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
 
-constraintTerm constraintTerm_makeIntLitValue (int i);
+/*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@dependent@*/ exprNode e) /*@*/;
 
-bool constraintTerm_isIntLiteral (constraintTerm term);
+constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
 
-cstring constraintTerm_print (constraintTerm term);
+bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
 
-constraintTerm constraintTerm_makesRef  (/*@only@*/ sRef s);
+bool constraintTerm_canGetValue (constraintTerm term)/*@*/;
+int constraintTerm_getValue (constraintTerm term) /*@*/;
 
-bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2);
+fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
 
 
-constraintTerm constraintTerm_doSRefFixBaseParam (constraintTerm term, exprNodeList arglist);
-#endif
+bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
+
+cstring constraintTerm_print (constraintTerm term) /*@*/;
+
+constraintTerm constraintTerm_makesRef  (/*@temp@*/ /*@observer@*/ sRef s) /*@*/;
+
+/*@unused@*/ bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
+
+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) /*@*/;
 
 
+constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
 
+void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f);
 
+/*@only@*/ constraintTerm constraintTerm_undump ( FILE *f);
+
+/*@=namechecks@*/
+
+#else
+
+#error Multiple Include
+
+#endif
This page took 0.036695 seconds and 4 git commands to generate.