]> andersk Git - splint.git/blame - src/Headers/stateInfo.h
*** empty log message ***
[splint.git] / src / Headers / stateInfo.h
CommitLineData
28bf4b0b 1/*
c0de361f 2** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
28bf4b0b 3** See ../LICENSE for license information.
4*/
5/*
6** stateInfo.h
7*/
8
9# ifndef STATEINFO_H
10# define STATEINFO_H
11
6fcd0b1e 12typedef /*@null@*/ struct s_stateInfo *stateInfo ;
13
16c024b5 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;
6fcd0b1e 64
65/*@null@*/ struct s_stateInfo
28bf4b0b 66{
16c024b5 67 /*@only@*/ fileloc loc;
68 stateAction action;
28bf4b0b 69 /*@observer@*/ sRef ref;
6fcd0b1e 70 /*@null@*/ stateInfo previous;
71} ;
28bf4b0b 72
73/*@constant null stateInfo stateInfo_undefined@*/
74# define stateInfo_undefined (NULL)
75
0e41eb0e 76extern /*@falsewhennull@*/ bool stateInfo_isDefined (stateInfo p_s) /*@*/ ;
28bf4b0b 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
16c024b5 83extern /*@only@*/ stateInfo stateInfo_updateLoc (/*@only@*/ stateInfo p_old,
84 stateAction p_action,
85 fileloc p_loc) ;
28bf4b0b 86
87extern /*@only@*/ stateInfo
16c024b5 88 stateInfo_updateRefLoc (/*@only@*/ stateInfo p_old, /*@exposed@*/ sRef p_ref,
89 stateAction p_action,
90 fileloc p_loc) ;
28bf4b0b 91
92extern /*@only@*/ stateInfo stateInfo_copy (stateInfo p_a);
93
6970c11b 94extern /*@only@*/ /*@notnull@*/ stateInfo stateInfo_currentLoc (void) ;
16c024b5 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) /*@*/ ;
28bf4b0b 101
102extern /*@observer@*/ fileloc stateInfo_getLoc (stateInfo p_info) ;
103extern /*@only@*/ cstring stateInfo_unparse (stateInfo p_s) /*@*/ ;
104
16c024b5 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@*/ ;
6fcd0b1e 112
28bf4b0b 113# else
114# error "Multiple include"
115# endif
This page took 0.084973 seconds and 5 git commands to generate.