]> andersk Git - splint.git/blobdiff - src/Headers/exprNode.h
Changes to fix malloc size problem.
[splint.git] / src / Headers / exprNode.h
index a004add04b0e0a4a809c279a62d519263f5fb371..eec7b7763f378d3459f81f53b4ff36e9a0cb6853 100644 (file)
@@ -1,5 +1,5 @@
 /*
-** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
+** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
 ** See ../LICENSE for license information.
 **
 */
@@ -40,7 +40,8 @@ typedef enum
   XPR_INIT,       XPR_FACCESS, XPR_ARROW,    XPR_CONST,    XPR_STRINGLITERAL, 
   XPR_NUMLIT,     XPR_BODY,    XPR_NODE,     XPR_ITERCALL, XPR_TOK,
   XPR_WHILEPRED,  XPR_CASE,    XPR_FTCASE,   XPR_DEFAULT,  XPR_FTDEFAULT,
-  XPR_BLOCK,      XPR_INITBLOCK, XPR_LABEL
+  XPR_BLOCK,      XPR_INITBLOCK, 
+  XPR_LABEL
 } exprKind; 
 
 typedef struct 
@@ -118,7 +119,7 @@ typedef /*@null@*/ union
 {
   cstring literal;
   cstring id;
-  lltok *tok;
+  lltok tok;
   qtype qt;    /* sizeof(type) */
   /* use for any 2-operator (comma, arrayFetch, case, stmt) */
   exprPair pair; 
@@ -159,7 +160,7 @@ struct s_exprNode
   fileloc loc;
   /*@relnull@*/ exprData edata;
   cstring etext;
-  /*@notnull@*/   constraintList requiresConstraints;
+  /*@notnull@*/ constraintList requiresConstraints;
   /*@notnull@*/ constraintList ensuresConstraints;
   
   /*
@@ -174,9 +175,9 @@ struct s_exprNode
 /*@constant null exprNode exprNode_undefined; @*/
 # define exprNode_undefined ((exprNode)NULL)
 
-extern /*@falsenull@*/ bool exprNode_isDefined (exprNode p_e) /*@*/ ;
-extern /*@unused@*/ /*@truenull@*/ bool exprNode_isUndefined (exprNode p_e) /*@*/ ;
-extern /*@truenull@*/ bool exprNode_isError (exprNode p_e) /*@*/ ;
+extern /*@falsewhennull@*/ bool exprNode_isDefined (exprNode p_e) /*@*/ ;
+extern /*@unused@*/ /*@nullwhentrue@*/ bool exprNode_isUndefined (exprNode p_e) /*@*/ ;
+extern /*@nullwhentrue@*/ bool exprNode_isError (exprNode p_e) /*@*/ ;
 
 # define exprNode_isDefined(e)        ((e) != exprNode_undefined)
 # define exprNode_isUndefined(e)      ((e) == exprNode_undefined)
@@ -191,7 +192,7 @@ extern ctype exprNode_getType (/*@sef@*/ exprNode p_e) /*@*/ ;
 # define exprNode_getType(e) \
   (exprNode_isDefined(e) ? (e)->typ : ctype_unknown)
 
-extern /*@unused@*/ /*@falsenull@*/ bool exprNode_isInParens (/*@sef@*/ exprNode p_e) /*@*/ ;
+extern /*@unused@*/ /*@falsewhennull@*/ bool exprNode_isInParens (/*@sef@*/ exprNode p_e) /*@*/ ;
 # define exprNode_isInParens(e) \
   (exprNode_isDefined(e) && (e)->kind == XPR_PARENS)
 
@@ -216,6 +217,8 @@ extern long exprNode_getLongValue (exprNode p_e) /*@*/ ;
 
 extern /*@observer@*/ cstring exprNode_unparseFirst (exprNode p_e) /*@*/ ;
 extern /*@observer@*/ guardSet exprNode_getForGuards (exprNode p_pred) /*@*/ ;
+extern bool exprNode_loopMustExec (exprNode p_forPred) /*@*/ ;
+
 extern bool exprNode_isNullValue (exprNode p_e) /*@*/ ;
 extern /*@exposed@*/ sRef exprNode_getSref (exprNode p_e) /*@*/ ;
 extern /*@exposed@*/ uentry exprNode_getUentry (exprNode p_e) 
@@ -271,18 +274,23 @@ extern exprNode
   exprNode_vaArg (/*@only@*/ lltok p_tok, /*@only@*/ exprNode p_arg, /*@only@*/ qtype p_qt) 
   /*@globals internalState@*/ ;
 
+extern bool exprNode_isMultiStatement (exprNode p_e) /*@*/ ;
+
 /*
 ** Has surrounding quotes.
 */
 
-extern exprNode 
+extern /*@only@*/ /*@notnull@*/ exprNode 
   exprNode_stringLiteral (/*@only@*/ cstring p_t, /*@only@*/ fileloc p_loc) /*@*/ ;
 
+extern /*@only@*/ /*@notnull@*/ exprNode
+  exprNode_wideStringLiteral (/*@only@*/ cstring p_t, /*@only@*/ fileloc p_loc) /*@*/ ;
+
 /*
 ** No surrounding quotes.
 */
 
-extern exprNode 
+extern /*@notnull@*/ exprNode 
   exprNode_rawStringLiteral (/*@only@*/ cstring p_t, /*@only@*/ fileloc p_loc) /*@*/ ;
 
 extern exprNode exprNode_comma (/*@only@*/ exprNode p_e1, /*@only@*/ exprNode p_e2)  /*@*/ ;
@@ -294,9 +302,13 @@ extern
 exprNode exprNode_caseMarker (/*@only@*/ exprNode p_test, bool p_fallThrough) /*@*/ ;
 
 extern exprNode exprNode_concat (/*@only@*/ exprNode p_e1, /*@only@*/ exprNode p_e2);
-extern exprNode exprNode_createTok (/*@only@*/ lltok p_t) /*@*/ ;
+extern /*@notnull@*/ exprNode exprNode_createTok (/*@only@*/ lltok p_t) /*@*/ ;
 extern exprNode exprNode_statement (/*@only@*/ exprNode p_e, /*@only@*/ lltok p_t);
 extern exprNode exprNode_makeBlock (/*@only@*/ exprNode p_e);
+extern exprNode exprNode_compoundStatementExpression (/*@only@*/ lltok p_tlparen, /*@only@*/ exprNode p_e) ;
+
+extern void exprNode_checkIfPred (exprNode p_pred) /*@modifies g_warningstream@*/ ;
+
 extern exprNode exprNode_if (/*@only@*/ exprNode p_pred, /*@only@*/ exprNode p_tclause);
 extern exprNode 
   exprNode_ifelse (/*@only@*/ exprNode p_pred, /*@only@*/ exprNode p_tclause, 
@@ -312,8 +324,9 @@ extern exprNode exprNode_return (/*@only@*/ exprNode p_e);
 extern /*@dependent@*/ /*@observer@*/ cstring 
 exprNode_unparse (/*@temp@*/ exprNode p_e) /*@*/ ; 
 
-extern bool exprNode_isCharLit (exprNode p_e) /*@*/ ;
-extern bool exprNode_isNumLit (exprNode p_e) /*@*/ ;
+extern /*@falsewhennull@*/ bool exprNode_isBlock (exprNode p_e) /*@*/ ;
+extern /*@falsewhennull@*/ bool exprNode_isCharLiteral (exprNode p_e) /*@*/ ;
+extern /*@falsewhennull@*/ bool exprNode_isNumLiteral (exprNode p_e) /*@*/ ;
 
 extern exprNode 
   exprNode_makeInitialization (/*@only@*/ idDecl p_t, /*@only@*/ exprNode p_e);
@@ -335,17 +348,15 @@ extern            exprNode exprNode_iterExpr (/*@returned@*/ exprNode p_e);
 extern exprNode exprNode_iterNewId (/*@only@*/ cstring p_s);
 extern exprNode 
   exprNode_iterStart (/*@observer@*/ uentry p_name, /*@only@*/ exprNodeList p_alist);
-extern exprNode 
-  exprNode_numLiteral (ctype p_c, /*@temp@*/ cstring p_t, 
-                      /*@only@*/ fileloc p_loc, long p_val); 
+extern exprNode exprNode_numLiteral (ctype p_c, /*@temp@*/ cstring p_t, 
+                                    /*@only@*/ fileloc p_loc, long p_val) /*@*/ ; 
 extern void exprNode_initMod (void) /*@modifies internalState@*/ ;
 extern exprNode exprNode_for (/*@keep@*/ exprNode p_inc, /*@keep@*/ exprNode p_body);
 extern exprNode 
   exprNode_forPred (/*@only@*/ exprNode p_init, 
                    /*@only@*/ exprNode p_test, /*@only@*/ exprNode p_inc);
-extern exprNode 
-  exprNode_floatLiteral (double p_d, ctype p_ct, 
-                        cstring p_text, /*@only@*/ fileloc p_loc);
+extern exprNode exprNode_floatLiteral (double p_d, ctype p_ct, 
+                                      cstring p_text, /*@only@*/ fileloc p_loc) /*@*/ ;
 extern /*@notnull@*/ exprNode exprNode_createId (/*@observer@*/ uentry p_c);
 extern /*@notnull@*/ exprNode exprNode_makeConstantString (/*@temp@*/ cstring p_c, /*@only@*/ fileloc p_loc) /*@*/ ;
 extern exprNode exprNode_cast (/*@only@*/ lltok p_tok, /*@only@*/ exprNode p_e, /*@only@*/ qtype p_q);
@@ -362,11 +373,7 @@ extern exprNode
   exprNode_updateLocation (/*@returned@*/ exprNode p_e, /*@temp@*/ fileloc p_loc);
 extern void exprNode_freeShallow (/*@only@*/ exprNode p_e);
 extern void exprNode_destroyMod (void) /*@modifies internalState@*/ ;
-extern bool exprNode_isAssign (exprNode p_e) /*@*/ ;
-
-/* added 8-15-00
-   by DRL */
-extern /*@observer@*/ fileloc exprNode_getfileloc (exprNode p_e) ;
+extern /*@falsewhennull@*/ bool exprNode_isAssign (exprNode p_e) /*@*/ ;
 
 /*@-exportlocal@*/
 extern bool exprNode_isDefaultMarker (exprNode p_e) /*@*/ ;
This page took 0.044363 seconds and 4 git commands to generate.