]> andersk Git - splint.git/blame - src/Headers/specialClauses.h
*** empty log message ***
[splint.git] / src / Headers / specialClauses.h
CommitLineData
885824d3 1/*
2** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2000.
3** See ../LICENSE for license information.
4*/
5/*
6** specialClauses.h
7*/
8
9# ifndef SPECIALCLAUSES_H
10# define SPECIALCLAUSES_H
11
12typedef enum
13{
14 SP_USES,
15 SP_DEFINES,
16 SP_ALLOCATES,
17 SP_RELEASES,
18 SP_SETS,
19 SP_ISNULL,
20 SP_ISNOTNULL,
21 SP_ISONLY,
22 SP_ISSHARED,
23 SP_ISDEPENDENT,
24 SP_ISOWNED,
25 SP_ISOBSERVER,
26 SP_ISEXPOSED
27} specialClauseKind ;
28
29typedef enum
30{
31 TK_BEFORE,
32 TK_AFTER,
33 TK_BOTH
34} stateConstraint;
35
36abst_typedef struct
37{
38 stateConstraint state;
39 specialClauseKind kind;
40 sRefSet refs;
41} *specialClause ;
42
43typedef /*@only@*/ specialClause o_specialClause;
44
45extern /*@unused@*/ cstring specialClause_unparse (specialClause p_s) /*@*/ ;
46
47extern /*@null@*/ sRefMod
48 specialClause_getEffectFunction (specialClause p_cl) /*@*/ ;
49
50extern /*@null@*/ sRefMod
51 specialClause_getReturnEffectFunction (specialClause p_cl) /*@*/ ;
52
53extern /*@null@*/ sRefMod
54 specialClause_getEntryFunction (specialClause p_cl) /*@*/ ;
55
56extern bool specialClause_isBefore (specialClause p_cl) /*@*/ ;
57extern bool specialClause_isAfter (specialClause p_cl) /*@*/ ;
58
59extern /*@observer@*/ sRefSet specialClause_getRefs (specialClause p_cl) /*@*/ ;
60# define specialClause_getRefs(cl) ((cl)->refs)
61
62abst_typedef /*@null@*/ struct
63{
64 int nelements;
65 int nspace;
66 /*@relnull@*/ /*@reldef@*/ o_specialClause *elements;
67} *specialClauses ;
68
69/*@iter specialClauses_elements (sef specialClauses x, yield exposed specialClause el); @*/
70# define specialClauses_elements(x, m_el) \
71 { if (!specialClauses_isUndefined(x)) \
72 { int m_ind; specialClause *m_elements = &((x)->elements[0]); \
73 for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
74 { specialClause m_el = *(m_elements++);
75
76# define end_specialClauses_elements }}}
77
78/*@iter specialClauses_preElements (sef specialClauses x, yield exposed specialClause el); @*/
79# define specialClauses_preElements(x, m_el) \
80 { if (!specialClauses_isUndefined(x)) \
81 { int m_ind; specialClause *m_elements = &((x)->elements[0]); \
82 for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
83 { specialClause m_el = *(m_elements++); if (specialClause_isBefore (m_el)) { \
84
85# define end_specialClauses_preElements }}}}
86
87/*@iter specialClauses_postElements (sef specialClauses x, yield exposed specialClause el); @*/
88# define specialClauses_postElements(x, m_el) \
89 { if (!specialClauses_isUndefined(x)) \
90 { int m_ind; specialClause *m_elements = &((x)->elements[0]); \
91 for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
92 { specialClause m_el = *(m_elements++); if (specialClause_isAfter (m_el)) { \
93
94# define end_specialClauses_postElements }}}}
95
96extern void specialClauses_checkAll (uentry p_ue)
97 /*@modifies p_ue, g_msgstream@*/ ;
98
99extern flagcode specialClause_preErrorCode (specialClause p_cl) /*@*/ ;
100extern /*@observer@*/ cstring
101 specialClause_preErrorString (specialClause p_cl, sRef p_sr) /*@*/ ;
102
103extern flagcode specialClause_postErrorCode (specialClause p_cl) /*@*/ ;
104extern /*@observer@*/ cstring
105 specialClause_postErrorString (specialClause p_cl, sRef p_sr) /*@*/ ;
106
107extern sRefTest specialClause_getPreTestFunction (specialClause p_cl) /*@*/ ;
108
109extern sRefTest specialClause_getPostTestFunction (specialClause p_cl) /*@*/ ;
110extern sRefShower specialClause_getPostTestShower (specialClause p_cl) /*@*/ ;
111
112extern specialClause
113 specialClause_create (stateConstraint p_st, specialClauseKind p_k, /*@only@*/ sRefSet p_s)
114 /*@*/ ;
115
116extern specialClause specialClause_createDefines (/*@only@*/ sRefSet p_s) /*@*/ ;
117extern specialClause specialClause_createUses (/*@only@*/ sRefSet p_s) /*@*/ ;
118extern specialClause specialClause_createAllocates (/*@only@*/ sRefSet p_s) /*@*/ ;
119extern specialClause specialClause_createReleases (/*@only@*/ sRefSet p_s) /*@*/ ;
120extern specialClause specialClause_createSets (/*@only@*/ sRefSet p_s) /*@*/ ;
121
122/*@constant null specialClauses specialClauses_undefined@*/
123# define specialClauses_undefined ((specialClauses) 0)
124
125extern /*@falsenull@*/ bool specialClauses_isDefined (specialClauses p_s) /*@*/ ;
126# define specialClauses_isDefined(s) ((s) != specialClauses_undefined)
127
128extern /*@truenull@*/ bool specialClauses_isUndefined (specialClauses p_s) /*@*/ ;
129# define specialClauses_isUndefined(s) ((s) == specialClauses_undefined)
130
131extern /*@unused@*/ int
132 specialClauses_size (/*@sef@*/ specialClauses p_s) /*@*/ ;
133# define specialClauses_size(s) (specialClauses_isDefined (s) ? (s)->nelements : 0)
134
135extern cstring specialClause_unparseKind (specialClause p_s) /*@*/ ;
136
137extern specialClauses
138 specialClauses_add (/*@returned@*/ specialClauses p_s,
139 /*@only@*/ specialClause p_el)
140 /*@modifies p_s@*/ ;
141
142extern /*@unused@*/ cstring specialClauses_unparse (specialClauses p_s) /*@*/ ;
143extern void specialClauses_free (/*@only@*/ specialClauses p_s) ;
144
145extern /*@only@*/ specialClauses specialClauses_copy (specialClauses p_s) /*@*/ ;
146
147extern cstring specialClauses_dump (specialClauses p_s) /*@*/ ;
148extern specialClauses specialClauses_undump (char **p_s) /*@modifies *p_s@*/ ;
149
150/*@constant int specialClausesBASESIZE;@*/
151# define specialClausesBASESIZE MIDBASESIZE
152
153extern void specialClauses_checkEqual (uentry p_old, uentry p_unew)
154 /*@modifies g_msgstream@*/ ;
155
156# else
157# error "Multiple include"
158# endif
159
160
This page took 0.078699 seconds and 5 git commands to generate.