]> andersk Git - splint.git/blame_incremental - src/Headers/stateInfo.h
*** empty log message ***
[splint.git] / src / Headers / stateInfo.h
... / ...
CommitLineData
1/*
2** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
3** See ../LICENSE for license information.
4*/
5/*
6** stateInfo.h
7*/
8
9# ifndef STATEINFO_H
10# define STATEINFO_H
11
12typedef /*@null@*/ struct s_stateInfo *stateInfo ;
13
14typedef enum {
15 SA_UNKNOWN,
16
17 /* Any type of action */
18 SA_CREATED,
19 SA_DECLARED,
20 SA_CHANGED,
21
22 /* Definition actions */
23 SA_UNDEFINED,
24 SA_MUNDEFINED,
25 SA_PDEFINED,
26 SA_DEFINED,
27 SA_RELEASED,
28 SA_ALLOCATED,
29 SA_KILLED,
30 SA_PKILLED,
31 SA_MERGED,
32
33 /* sharing actions */
34 SA_SHARED,
35 SA_ONLY,
36 SA_IMPONLY,
37 SA_OWNED,
38 SA_DEPENDENT,
39 SA_IMPDEPENDENT,
40 SA_KEPT,
41 SA_KEEP,
42 SA_FRESH,
43 SA_XSTACK, /* SA_STACK is defined in some Linux headers (but ISO does not reserve this namespace) */
44 SA_TEMP,
45 SA_IMPTEMP,
46 SA_STATIC,
47 SA_LOCAL,
48
49 SA_REFCOUNTED,
50 SA_REFS,
51 SA_NEWREF,
52 SA_KILLREF,
53
54 /* exposure */
55 SA_EXPOSED,
56 SA_OBSERVER,
57
58 /* nullity actions */
59 SA_BECOMESNULL,
60 SA_BECOMESNONNULL,
61 SA_BECOMESPOSSIBLYNULL,
62
63} stateAction;
64
65/*@null@*/ struct s_stateInfo
66{
67 /*@only@*/ fileloc loc;
68 stateAction action;
69 /*@observer@*/ sRef ref;
70 /*@null@*/ stateInfo previous;
71} ;
72
73/*@constant null stateInfo stateInfo_undefined@*/
74# define stateInfo_undefined (NULL)
75
76extern /*@falsewhennull@*/ bool stateInfo_isDefined (stateInfo p_s) /*@*/ ;
77# define stateInfo_isDefined(p_s) ((p_s) != stateInfo_undefined)
78
79extern void stateInfo_free (/*@only@*/ stateInfo p_a);
80
81extern /*@only@*/ stateInfo stateInfo_update (/*@only@*/ stateInfo p_old, stateInfo p_newinfo);
82
83extern /*@only@*/ stateInfo stateInfo_updateLoc (/*@only@*/ stateInfo p_old,
84 stateAction p_action,
85 fileloc p_loc) ;
86
87extern /*@only@*/ stateInfo
88 stateInfo_updateRefLoc (/*@only@*/ stateInfo p_old, /*@exposed@*/ sRef p_ref,
89 stateAction p_action,
90 fileloc p_loc) ;
91
92extern /*@only@*/ stateInfo stateInfo_copy (stateInfo p_a);
93
94extern /*@only@*/ /*@notnull@*/ stateInfo stateInfo_currentLoc (void) ;
95
96extern /*@only@*/ /*@notnull@*/ stateInfo
97stateInfo_makeLoc (fileloc p_loc, stateAction p_action) /*@*/ ;
98
99extern /*@only@*/ /*@notnull@*/ stateInfo
100stateInfo_makeRefLoc (/*@exposed@*/ sRef p_ref, fileloc p_loc, stateAction p_action) /*@*/ ;
101
102extern /*@observer@*/ fileloc stateInfo_getLoc (stateInfo p_info) ;
103extern /*@only@*/ cstring stateInfo_unparse (stateInfo p_s) /*@*/ ;
104
105extern stateAction stateAction_fromSState (sstate p_ss) /*@*/ ;
106extern stateAction stateAction_fromNState (nstate p_ns) /*@*/ ;
107extern stateAction stateAction_fromExkind (exkind p_ex) /*@*/ ;
108extern stateAction stateAction_fromAlkind (alkind p_ak) /*@*/ ;
109
110extern void stateInfo_display (stateInfo p_s, /*@only@*/ cstring p_sname)
111 /*@modifies g_errorstream@*/ ;
112
113# else
114# error "Multiple include"
115# endif
This page took 0.031767 seconds and 5 git commands to generate.