]> andersk Git - splint.git/blobdiff - src/Headers/stateInfo.h
Improved tracking of state change locations. Added +showdeephistory
[splint.git] / src / Headers / stateInfo.h
index 8ff6f27daa6882e8f49427c162e1585c25d78aa9..d37f1cc6d071d415d9cdb5eb04cc8250aa118edf 100644 (file)
 
 typedef /*@null@*/ struct s_stateInfo *stateInfo ;
 
+typedef enum {
+  SA_UNKNOWN,
+
+  /* Any type of action */
+  SA_CREATED,
+  SA_DECLARED,
+  SA_CHANGED,
+
+  /* Definition actions */
+  SA_UNDEFINED,
+  SA_MUNDEFINED,
+  SA_PDEFINED,
+  SA_DEFINED,
+  SA_RELEASED,
+  SA_ALLOCATED,
+  SA_KILLED,
+  SA_PKILLED,
+  SA_MERGED,
+
+  /* sharing actions */
+  SA_SHARED,
+  SA_ONLY,
+  SA_IMPONLY,
+  SA_OWNED,
+  SA_DEPENDENT,
+  SA_IMPDEPENDENT,
+  SA_KEPT,
+  SA_KEEP,
+  SA_FRESH,
+  SA_XSTACK, /* SA_STACK is defined in some Linux headers (but ISO does not reserve this namespace) */
+  SA_TEMP,
+  SA_IMPTEMP,
+  SA_STATIC,
+  SA_LOCAL,
+
+  SA_REFCOUNTED,
+  SA_REFS,
+  SA_NEWREF,
+  SA_KILLREF,
+
+  /* exposure */
+  SA_EXPOSED,
+  SA_OBSERVER,
+
+  /* nullity actions */
+  SA_BECOMESNULL,
+  SA_BECOMESNONNULL,
+  SA_BECOMESPOSSIBLYNULL,
+
+} stateAction;
 
 /*@null@*/ struct s_stateInfo
 {
-  /*@only@*/ fileloc  loc;
+  /*@only@*/ fileloc loc;
+  stateAction action;
   /*@observer@*/ sRef ref;
   /*@null@*/ stateInfo previous;
 } ;
@@ -29,21 +80,35 @@ extern void stateInfo_free (/*@only@*/ stateInfo p_a);
 
 extern /*@only@*/ stateInfo stateInfo_update (/*@only@*/ stateInfo p_old, stateInfo p_newinfo);
 
-extern /*@only@*/ stateInfo stateInfo_updateLoc (/*@only@*/ stateInfo p_old, fileloc p_loc) ;
+extern /*@only@*/ stateInfo stateInfo_updateLoc (/*@only@*/ stateInfo p_old, 
+                                                stateAction p_action,
+                                                fileloc p_loc) ;
 
 extern /*@only@*/ stateInfo 
-    stateInfo_updateRefLoc (/*@only@*/ stateInfo p_old, /*@exposed@*/ sRef p_ref, fileloc p_loc) ;
+    stateInfo_updateRefLoc (/*@only@*/ stateInfo p_old, /*@exposed@*/ sRef p_ref, 
+                           stateAction p_action,
+                           fileloc p_loc) ;
 
 extern /*@only@*/ stateInfo stateInfo_copy (stateInfo p_a); 
 
 extern /*@only@*/ /*@notnull@*/ stateInfo stateInfo_currentLoc (void) ;
-extern /*@only@*/ /*@notnull@*/ stateInfo stateInfo_makeLoc (fileloc p_loc) ;
-extern /*@only@*/ /*@notnull@*/ stateInfo stateInfo_makeRefLoc (/*@exposed@*/ sRef p_ref, fileloc p_loc) ;
+
+extern /*@only@*/ /*@notnull@*/ stateInfo
+stateInfo_makeLoc (fileloc p_loc, stateAction p_action) /*@*/ ;
+
+extern /*@only@*/ /*@notnull@*/ stateInfo 
+stateInfo_makeRefLoc (/*@exposed@*/ sRef p_ref, fileloc p_loc, stateAction p_action) /*@*/ ; 
 
 extern /*@observer@*/ fileloc stateInfo_getLoc (stateInfo p_info) ;
 extern /*@only@*/ cstring stateInfo_unparse (stateInfo p_s) /*@*/ ;
 
-extern void stateInfo_display (stateInfo p_s, /*@only@*/ cstring p_sname) /*@modifies g_errorstream@*/ ;
+extern stateAction stateAction_fromSState (sstate p_ss) /*@*/ ;
+extern stateAction stateAction_fromNState (nstate p_ns) /*@*/ ;
+extern stateAction stateAction_fromExkind (exkind p_ex) /*@*/ ;
+extern stateAction stateAction_fromAlkind (alkind p_ak) /*@*/ ;
+
+extern void stateInfo_display (stateInfo p_s, /*@only@*/ cstring p_sname) 
+  /*@modifies g_errorstream@*/ ;
 
 # else
 # error "Multiple include"
This page took 0.052242 seconds and 4 git commands to generate.