]>
Commit | Line | Data |
---|---|---|
885824d3 | 1 | /* |
c0de361f | 2 | ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003. |
885824d3 | 3 | ** See ../LICENSE for license information. |
4 | ** | |
5 | */ | |
6 | /* | |
7 | ** qual.h | |
8 | ** | |
9 | ** representation of type qualifiers | |
10 | */ | |
11 | ||
12 | # ifndef QUALH | |
13 | # define QUALH | |
14 | ||
15 | /* | |
16 | ** just use tokens to represent type qualifiers | |
17 | ** (tokens are defined in cgrammar.y) | |
18 | */ | |
19 | ||
28bf4b0b | 20 | typedef enum { |
21 | QU_UNKNOWN = 0, | |
f9264521 | 22 | QU_CONST, QU_VOLATILE, QU_RESTRICT, |
23 | QU_INLINE, QU_EXTERN, QU_STATIC, | |
24 | QU_AUTO, QU_REGISTER, | |
885824d3 | 25 | QU_SHORT, QU_LONG, QU_SIGNED, QU_UNSIGNED, |
26 | QU_OUT, QU_IN, | |
27 | QU_ONLY, QU_IMPONLY, | |
28 | QU_TEMP, QU_SHARED, QU_KEEP, QU_KEPT, QU_PARTIAL, QU_SPECIAL, | |
28bf4b0b | 29 | QU_NULL, QU_RELNULL, QU_ISNULL, |
30 | QU_NULLTERMINATED, | |
11ed4f45 | 31 | QU_SETBUFFERSIZE, |
885824d3 | 32 | QU_EXPOSED, QU_RETURNED, QU_OBSERVER, QU_UNIQUE, |
33 | QU_OWNED, QU_DEPENDENT, QU_RELDEF, | |
34 | QU_YIELD, | |
35 | QU_NEVEREXIT, QU_EXITS, QU_MAYEXIT, QU_TRUEEXIT, QU_FALSEEXIT, | |
36 | QU_UNUSED, QU_EXTERNAL, QU_SEF, | |
37 | QU_NOTNULL, | |
e5081f8c | 38 | QU_ABSTRACT, QU_NUMABSTRACT, QU_CONCRETE, |
885824d3 | 39 | QU_MUTABLE, QU_IMMUTABLE, |
40 | QU_REFCOUNTED, QU_REFS, QU_NEWREF, QU_KILLREF, QU_TEMPREF, | |
41 | QU_TRUENULL, QU_FALSENULL, | |
42 | QU_CHECKED, QU_UNCHECKED, QU_CHECKEDSTRICT, QU_CHECKMOD, | |
43 | QU_UNDEF, QU_KILLED, | |
44 | QU_PRINTFLIKE, QU_SCANFLIKE, QU_MESSAGELIKE, | |
28bf4b0b | 45 | QU_USERANNOT, |
885824d3 | 46 | QU_LAST |
28bf4b0b | 47 | } quenum; |
48 | ||
49 | immut_typedef struct { | |
50 | quenum kind; | |
51 | /*@observer@*/ /*@null@*/ annotationInfo info; /* for QU_USERANNOT only */ | |
52 | } *qual; | |
53 | ||
54 | extern /*@only@*/ cstring qual_dump (qual) ; | |
55 | extern qual qual_undump (char **p_s) /*@modifies *p_s@*/ ; | |
56 | ||
885824d3 | 57 | |
58 | /* | |
59 | ** qualifiers correspond to tokens in the grammar: | |
60 | ** | |
61 | ** standard C qualifiers: | |
62 | ** QCONST QVOLATILE QINLINE QEXTERN QSTATIC QAUTO QREGISTER | |
63 | ** QSHORT QLONG QSIGNED QUNSIGNED | |
64 | ** augmented LCL qualifiers: | |
65 | ** QOUT QONLY QTEMP QSHARED QUNIQUE QYIELD | |
1ac6313d | 66 | ** QEXITS QMAYEXIT QNULLTERMINATED |
885824d3 | 67 | */ |
68 | ||
69 | extern qual qual_fromInt (int p_q) /*@*/ ; | |
70 | extern /*@observer@*/ cstring qual_unparse (qual p_q) /*@*/ ; | |
71 | ||
28bf4b0b | 72 | extern bool qual_match (qual p_q1, qual p_q2) /*@*/ ; |
885824d3 | 73 | |
74 | extern bool qual_isUnknown (qual) /*@*/ ; | |
75 | extern bool qual_isTrueNull (qual) /*@*/ ; | |
76 | extern bool qual_isFalseNull (qual) /*@*/ ; | |
77 | extern bool qual_isOwned (qual) /*@*/ ; | |
78 | extern bool qual_isDependent (qual) /*@*/ ; | |
79 | extern bool qual_isRefCounted (qual) /*@*/ ; | |
80 | extern bool qual_isRefs (qual) /*@*/ ; | |
81 | extern bool qual_isNewRef (qual) /*@*/ ; | |
82 | extern bool qual_isKillRef (qual) /*@*/ ; | |
83 | extern bool qual_isTempRef (qual) /*@*/ ; | |
84 | extern bool qual_isLong (qual) /*@*/ ; | |
85 | extern bool qual_isShort (qual) /*@*/ ; | |
86 | extern bool qual_isSigned (qual) /*@*/ ; | |
87 | extern bool qual_isUnsigned (qual) /*@*/ ; | |
88 | extern bool qual_isUnique (qual) /*@*/ ; | |
89 | extern bool qual_isExits (qual) /*@*/ ; | |
90 | extern bool qual_isMayExit (qual) /*@*/ ; | |
91 | extern bool qual_isNeverExit (qual) /*@*/ ; | |
92 | extern bool qual_isTrueExit (qual) /*@*/ ; | |
93 | extern bool qual_isFalseExit (qual) /*@*/ ; | |
94 | extern bool qual_isConst (qual) /*@*/ ; | |
f9264521 | 95 | extern bool qual_isRestrict (qual) /*@*/ ; |
885824d3 | 96 | extern bool qual_isVolatile (qual) /*@*/ ; |
97 | extern bool qual_isInline (qual) /*@*/ ; | |
98 | extern bool qual_isExtern (qual) /*@*/ ; | |
99 | extern bool qual_isStatic (qual) /*@*/ ; | |
100 | extern bool qual_isAuto (qual) /*@*/ ; | |
101 | extern bool qual_isRegister (qual) /*@*/ ; | |
102 | extern bool qual_isOut (qual) /*@*/ ; | |
103 | extern bool qual_isIn (qual) /*@*/ ; | |
104 | extern bool qual_isYield (qual) /*@*/ ; | |
105 | extern bool qual_isOnly (qual) /*@*/ ; | |
106 | extern bool qual_isImpOnly (qual) /*@*/ ; | |
107 | extern bool qual_isPartial (qual) /*@*/ ; | |
108 | extern bool qual_isSpecial (qual) /*@*/ ; | |
109 | extern bool qual_isKeep (qual) /*@*/ ; | |
110 | extern bool qual_isKept (qual) /*@*/ ; | |
111 | extern bool qual_isTemp (qual) /*@*/ ; | |
112 | extern bool qual_isShared (qual) /*@*/ ; | |
113 | extern bool qual_isRelDef (qual) /*@*/ ; | |
114 | extern bool qual_isChecked (qual) /*@*/ ; | |
115 | extern bool qual_isCheckMod (qual) /*@*/ ; | |
116 | extern bool qual_isCheckedStrict (qual) /*@*/ ; | |
117 | extern bool qual_isUnchecked (qual) /*@*/ ; | |
118 | extern bool qual_isNull (qual) /*@*/ ; | |
28bf4b0b | 119 | extern bool qual_isIsNull (qual) /*@*/ ; |
885824d3 | 120 | extern bool qual_isRelNull (qual) /*@*/ ; |
121 | extern bool qual_isNotNull (qual) /*@*/ ; | |
122 | extern bool qual_isReturned (qual) /*@*/ ; | |
123 | extern bool qual_isExposed (qual) /*@*/ ; | |
124 | extern bool qual_isObserver (qual) /*@*/ ; | |
125 | extern bool qual_isUnused (qual) /*@*/ ; | |
126 | extern bool qual_isExternal (qual) /*@*/ ; | |
127 | extern bool qual_isSef (qual) /*@*/ ; | |
128 | extern bool qual_isAbstract (qual) /*@*/ ; | |
e5081f8c | 129 | extern bool qual_isNumAbstract (qual) /*@*/ ; |
130 | extern bool qual_isEitherAbstract (/*@sef@*/ qual) /*@*/ ; | |
885824d3 | 131 | extern bool qual_isConcrete (qual) /*@*/ ; |
132 | extern bool qual_isMutable (qual) /*@*/ ; | |
133 | extern bool qual_isImmutable (qual) /*@*/ ; | |
134 | extern bool qual_isNullPred (/*@sef@*/ qual) /*@*/ ; | |
135 | extern bool qual_isRefQual (/*@sef@*/ qual) /*@*/ ; | |
136 | extern bool qual_isUndef (/*@sef@*/ qual) /*@*/ ; | |
137 | extern bool qual_isKilled (/*@sef@*/ qual) /*@*/ ; | |
138 | extern /*@unused@*/ bool qual_isTypeQual (/*@sef@*/ qual) /*@*/ ; | |
139 | extern /*@unused@*/ bool qual_isControlQual (/*@sef@*/ qual) /*@*/ ; | |
140 | extern /*@unused@*/ bool qual_isStorageClass (/*@sef@*/ qual) /*@*/ ; | |
141 | extern bool qual_isCQual (/*@sef@*/ qual) /*@*/ ; | |
142 | extern bool qual_isAllocQual (/*@sef@*/ qual) /*@*/ ; | |
143 | extern bool qual_isGlobalQual (/*@sef@*/ qual) /*@*/ ; | |
144 | extern bool qual_isImplied (/*@sef@*/ qual) /*@*/ ; | |
145 | extern bool qual_isExQual (/*@sef@*/ qual) /*@*/ ; | |
146 | extern bool qual_isAliasQual (/*@sef@*/ qual) /*@*/ ; | |
28bf4b0b | 147 | extern bool qual_isPrintfLike (/*@sef@*/ qual) /*@*/ ; |
148 | extern bool qual_isScanfLike (/*@sef@*/ qual) /*@*/ ; | |
149 | extern bool qual_isMessageLike (/*@sef@*/ qual) /*@*/ ; | |
150 | extern bool qual_isMetaState (/*@sef@*/ qual) /*@*/ ; | |
151 | extern bool qual_isNullTerminated( /*@sef@*/ qual ) /*@*/ ; | |
152 | ||
153 | extern bool qual_isMemoryAllocation (/*@sef@*/ qual) /*@*/ ; | |
154 | # define qual_isMemoryAllocation(q) \ | |
155 | (qual_isOnly (q) || qual_isShared (q) || \ | |
156 | qual_isDependent (q) || qual_isOwned (q)) | |
885824d3 | 157 | |
28bf4b0b | 158 | extern bool qual_isSharing (/*@sef@*/ qual) /*@*/ ; |
159 | # define qual_isSharing(q) \ | |
160 | (qual_isObserver (q) || qual_isExposed (q)) | |
885824d3 | 161 | |
28bf4b0b | 162 | extern /*@observer@*/ annotationInfo qual_getAnnotationInfo (qual) /*@*/ ; |
163 | ||
6fcd0b1e | 164 | extern void qual_initMod (void) /*@modifies internalState@*/ ; |
165 | extern void qual_destroyMod (void) /*@modifies internalState@*/ ; | |
166 | ||
e5081f8c | 167 | # define qual_isUnknown(q) ((q)->kind == QU_UNKNOWN) |
168 | # define qual_isTrueNull(q) ((q)->kind == QU_TRUENULL) | |
169 | # define qual_isFalseNull(q) ((q)->kind == QU_FALSENULL) | |
170 | # define qual_isOwned(q) ((q)->kind == QU_OWNED) | |
171 | # define qual_isDependent(q) ((q)->kind == QU_DEPENDENT) | |
172 | # define qual_isRefCounted(q) ((q)->kind == QU_REFCOUNTED) | |
173 | # define qual_isRefs(q) ((q)->kind == QU_REFS) | |
174 | # define qual_isNewRef(q) ((q)->kind == QU_NEWREF) | |
175 | # define qual_isKillRef(q) ((q)->kind == QU_KILLREF) | |
176 | # define qual_isTempRef(q) ((q)->kind == QU_TEMPREF) | |
177 | # define qual_isLong(q) ((q)->kind == QU_LONG) | |
178 | # define qual_isShort(q) ((q)->kind == QU_SHORT) | |
179 | # define qual_isSigned(q) ((q)->kind == QU_SIGNED) | |
180 | # define qual_isUnsigned(q) ((q)->kind == QU_UNSIGNED) | |
181 | # define qual_isUnique(q) ((q)->kind == QU_UNIQUE) | |
182 | # define qual_isExits(q) ((q)->kind == QU_EXITS) | |
183 | # define qual_isMayExit(q) ((q)->kind == QU_MAYEXIT) | |
184 | # define qual_isNeverExit(q) ((q)->kind == QU_NEVEREXIT) | |
185 | # define qual_isTrueExit(q) ((q)->kind == QU_TRUEEXIT) | |
186 | # define qual_isFalseExit(q) ((q)->kind == QU_FALSEEXIT) | |
187 | # define qual_isConst(q) ((q)->kind == QU_CONST) | |
188 | # define qual_isRestrict(q) ((q)->kind == QU_RESTRICT) | |
189 | # define qual_isVolatile(q) ((q)->kind == QU_VOLATILE) | |
190 | # define qual_isInline(q) ((q)->kind == QU_INLINE) | |
191 | # define qual_isExtern(q) ((q)->kind == QU_EXTERN) | |
192 | # define qual_isStatic(q) ((q)->kind == QU_STATIC) | |
193 | # define qual_isAuto(q) ((q)->kind == QU_AUTO) | |
194 | # define qual_isRegister(q) ((q)->kind == QU_REGISTER) | |
195 | # define qual_isOut(q) ((q)->kind == QU_OUT) | |
196 | # define qual_isIn(q) ((q)->kind == QU_IN) | |
197 | # define qual_isYield(q) ((q)->kind == QU_YIELD) | |
198 | # define qual_isOnly(q) ((q)->kind == QU_ONLY) | |
199 | # define qual_isImpOnly(q) ((q)->kind == QU_IMPONLY) | |
200 | # define qual_isPartial(q) ((q)->kind == QU_PARTIAL) | |
201 | # define qual_isSpecial(q) ((q)->kind == QU_SPECIAL) | |
202 | # define qual_isKeep(q) ((q)->kind == QU_KEEP) | |
203 | # define qual_isKept(q) ((q)->kind == QU_KEPT) | |
204 | # define qual_isTemp(q) ((q)->kind == QU_TEMP) | |
205 | # define qual_isShared(q) ((q)->kind == QU_SHARED) | |
206 | # define qual_isRelDef(q) ((q)->kind == QU_RELDEF) | |
207 | # define qual_isNull(q) ((q)->kind == QU_NULL) | |
208 | # define qual_isIsNull(q) ((q)->kind == QU_ISNULL) | |
209 | # define qual_isRelNull(q) ((q)->kind == QU_RELNULL) | |
210 | # define qual_isNotNull(q) ((q)->kind == QU_NOTNULL) | |
211 | # define qual_isReturned(q) ((q)->kind == QU_RETURNED) | |
212 | # define qual_isExposed(q) ((q)->kind == QU_EXPOSED) | |
213 | # define qual_isObserver(q) ((q)->kind == QU_OBSERVER) | |
214 | # define qual_isUnused(q) ((q)->kind == QU_UNUSED) | |
215 | # define qual_isExternal(q) ((q)->kind == QU_EXTERNAL) | |
216 | # define qual_isSef(q) ((q)->kind == QU_SEF) | |
217 | # define qual_isAbstract(q) ((q)->kind == QU_ABSTRACT) | |
218 | # define qual_isNumAbstract(q) ((q)->kind == QU_NUMABSTRACT) | |
219 | # define qual_isConcrete(q) ((q)->kind == QU_CONCRETE) | |
220 | # define qual_isMutable(q) ((q)->kind == QU_MUTABLE) | |
221 | # define qual_isImmutable(q) ((q)->kind == QU_IMMUTABLE) | |
222 | # define qual_isChecked(q) ((q)->kind == QU_CHECKED) | |
223 | # define qual_isCheckMod(q) ((q)->kind == QU_CHECKMOD) | |
224 | # define qual_isCheckedStrict(q) ((q)->kind == QU_CHECKEDSTRICT) | |
225 | # define qual_isUnchecked(q) ((q)->kind == QU_UNCHECKED) | |
226 | # define qual_isUndef(q) ((q)->kind == QU_UNDEF) | |
227 | # define qual_isKilled(q) ((q)->kind == QU_KILLED) | |
228 | # define qual_isPrintfLike(q) ((q)->kind == QU_PRINTFLIKE) | |
229 | # define qual_isScanfLike(q) ((q)->kind == QU_SCANFLIKE) | |
230 | # define qual_isMessageLike(q) ((q)->kind == QU_MESSAGELIKE) | |
231 | # define qual_isMetaState(q) ((q)->kind == QU_USERANNOT) | |
28bf4b0b | 232 | # define qual_isNullTerminated(q) ((q)->kind == QU_NULLTERMINATED) |
233 | ||
234 | extern qual qual_createPlain (quenum) /*@*/ ; | |
15b3d2b2 | 235 | extern qual qual_createMetaState (/*@observer@*/ annotationInfo) /*@*/ ; |
885824d3 | 236 | extern qual qual_createTrueNull (void) /*@*/ ; |
237 | extern qual qual_createFalseNull (void) /*@*/ ; | |
238 | extern qual qual_createRefCounted (void) /*@*/ ; | |
239 | extern qual qual_createRefs (void) /*@*/ ; | |
240 | extern qual qual_createNewRef (void) /*@*/ ; | |
241 | extern qual qual_createKillRef (void) /*@*/ ; | |
242 | extern qual qual_createTempRef (void) /*@*/ ; | |
243 | extern qual qual_createNotNull (void) /*@*/ ; | |
e5081f8c | 244 | extern qual qual_createAbstract (void) /*@*/ ; |
245 | extern qual qual_createNumAbstract (void) /*@*/ ; | |
885824d3 | 246 | extern qual qual_createConcrete (void) /*@*/ ; |
247 | extern qual qual_createMutable (void) /*@*/ ; | |
248 | extern qual qual_createImmutable (void) /*@*/ ; | |
249 | extern qual qual_createShort (void) /*@*/ ; | |
250 | extern qual qual_createLong (void) /*@*/ ; | |
251 | extern qual qual_createSigned (void) /*@*/ ; | |
252 | extern qual qual_createUnsigned (void) /*@*/ ; | |
253 | extern qual qual_createUnique (void) /*@*/ ; | |
254 | extern qual qual_createMayExit (void) /*@*/ ; | |
255 | extern qual qual_createExits (void) /*@*/ ; | |
256 | extern qual qual_createNeverExit (void) /*@*/ ; | |
257 | extern qual qual_createFalseExit (void) /*@*/ ; | |
258 | extern qual qual_createTrueExit (void) /*@*/ ; | |
259 | extern qual qual_createConst (void) /*@*/ ; | |
f9264521 | 260 | extern qual qual_createRestrict (void) /*@*/ ; |
885824d3 | 261 | extern qual qual_createVolatile (void) /*@*/ ; |
262 | extern qual qual_createInline (void) /*@*/ ; | |
263 | extern qual qual_createExtern (void) /*@*/ ; | |
264 | extern qual qual_createStatic (void) /*@*/ ; | |
265 | extern qual qual_createAuto (void) /*@*/ ; | |
266 | extern qual qual_createRegister (void) /*@*/ ; | |
267 | extern qual qual_createOut (void) /*@*/ ; | |
268 | extern qual qual_createIn (void) /*@*/ ; | |
269 | extern qual qual_createYield (void) /*@*/ ; | |
270 | extern qual qual_createOnly (void) /*@*/ ; | |
271 | extern qual qual_createOwned (void) /*@*/ ; | |
272 | extern qual qual_createDependent (void) /*@*/ ; | |
273 | extern qual qual_createRelDef (void) /*@*/ ; | |
274 | extern qual qual_createImpOnly (void) /*@*/ ; | |
275 | extern qual qual_createPartial (void) /*@*/ ; | |
276 | extern qual qual_createSpecial (void) /*@*/ ; | |
277 | extern qual qual_createKeep (void) /*@*/ ; | |
278 | extern qual qual_createKept (void) /*@*/ ; | |
279 | extern qual qual_createTemp (void) /*@*/ ; | |
280 | extern qual qual_createShared (void) /*@*/ ; | |
28bf4b0b | 281 | extern qual qual_createNull (void) /*@*/ ; |
282 | extern qual qual_createIsNull (void) /*@*/ ; | |
885824d3 | 283 | extern qual qual_createRelNull (void) /*@*/ ; |
284 | extern qual qual_createReturned (void) /*@*/ ; | |
285 | extern qual qual_createExposed (void) /*@*/ ; | |
286 | extern qual qual_createObserver (void) /*@*/ ; | |
287 | extern qual qual_createUnused (void) /*@*/ ; | |
288 | extern qual qual_createExternal (void) /*@*/ ; | |
289 | extern qual qual_createSef (void) /*@*/ ; | |
290 | extern qual qual_createChecked (void) /*@*/ ; | |
291 | extern qual qual_createCheckMod (void) /*@*/ ; | |
292 | extern qual qual_createUnchecked (void) /*@*/ ; | |
293 | extern qual qual_createCheckedStrict (void) /*@*/ ; | |
294 | extern qual qual_createUndef (void) /*@*/ ; | |
295 | extern qual qual_createKilled (void) /*@*/ ; | |
1ac6313d | 296 | extern qual qual_createNullTerminated (void) /*@*/ ; |
885824d3 | 297 | |
885824d3 | 298 | extern qual qual_createUnknown (void) /*@*/ ; |
28bf4b0b | 299 | # define qual_createUnknown() (qual_createPlain (QU_UNKNOWN)) |
885824d3 | 300 | |
301 | extern qual qual_createPrintfLike (void) /*@*/ ; | |
302 | extern qual qual_createScanfLike (void) /*@*/ ; | |
303 | extern qual qual_createMessageLike (void) /*@*/ ; | |
304 | ||
28bf4b0b | 305 | # define qual_createPrintfLike() (qual_createPlain (QU_PRINTFLIKE)) |
306 | # define qual_createScanfLike() (qual_createPlain (QU_SCANFLIKE)) | |
307 | # define qual_createMessageLike() (qual_createPlain (QU_MESSAGELIKE)) | |
308 | ||
309 | # define qual_createTrueNull() qual_createPlain (QU_TRUENULL) | |
310 | # define qual_createFalseNull() qual_createPlain (QU_FALSENULL) | |
311 | # define qual_createRefCounted() qual_createPlain (QU_REFCOUNTED) | |
312 | # define qual_createRefs() qual_createPlain (QU_REFS) | |
313 | # define qual_createNewRef() qual_createPlain (QU_NEWREF) | |
314 | # define qual_createKillRef() qual_createPlain (QU_KILLREF) | |
315 | # define qual_createTempRef() qual_createPlain (QU_TEMPREF) | |
316 | # define qual_createNotNull() qual_createPlain (QU_NOTNULL) | |
317 | # define qual_createAbstract() qual_createPlain (QU_ABSTRACT) | |
e5081f8c | 318 | # define qual_createNumAbstract() qual_createPlain (QU_NUMABSTRACT) |
28bf4b0b | 319 | # define qual_createConcrete() qual_createPlain (QU_CONCRETE) |
320 | # define qual_createMutable() qual_createPlain (QU_MUTABLE) | |
321 | # define qual_createImmutable() qual_createPlain (QU_IMMUTABLE) | |
322 | # define qual_createShort() qual_createPlain (QU_SHORT) | |
323 | # define qual_createLong() qual_createPlain (QU_LONG) | |
324 | # define qual_createSigned() qual_createPlain (QU_SIGNED) | |
325 | # define qual_createUnsigned() qual_createPlain (QU_UNSIGNED) | |
326 | # define qual_createUnique() qual_createPlain (QU_UNIQUE) | |
327 | # define qual_createMayExit() qual_createPlain (QU_MAYEXIT) | |
328 | # define qual_createExits() qual_createPlain (QU_EXITS) | |
329 | # define qual_createNeverExit() qual_createPlain (QU_NEVEREXIT) | |
330 | # define qual_createTrueExit() qual_createPlain (QU_TRUEEXIT) | |
331 | # define qual_createFalseExit() qual_createPlain (QU_FALSEEXIT) | |
332 | # define qual_createConst() qual_createPlain (QU_CONST) | |
f9264521 | 333 | # define qual_createRestrict() qual_createPlain (QU_RESTRICT) |
28bf4b0b | 334 | # define qual_createVolatile() qual_createPlain (QU_VOLATILE) |
335 | # define qual_createInline() qual_createPlain (QU_INLINE) | |
336 | # define qual_createExtern() qual_createPlain (QU_EXTERN) | |
337 | # define qual_createStatic() qual_createPlain (QU_STATIC) | |
338 | # define qual_createAuto() qual_createPlain (QU_AUTO) | |
339 | # define qual_createRegister() qual_createPlain (QU_REGISTER) | |
340 | # define qual_createOut() qual_createPlain (QU_OUT) | |
341 | # define qual_createIn() qual_createPlain (QU_IN) | |
342 | # define qual_createYield() qual_createPlain (QU_YIELD) | |
343 | # define qual_createOnly() qual_createPlain (QU_ONLY) | |
344 | # define qual_createOwned() qual_createPlain (QU_OWNED) | |
345 | # define qual_createDependent() qual_createPlain (QU_DEPENDENT) | |
346 | # define qual_createRelDef() qual_createPlain (QU_RELDEF) | |
347 | # define qual_createImpOnly() qual_createPlain (QU_IMPONLY) | |
348 | # define qual_createPartial() qual_createPlain (QU_PARTIAL) | |
349 | # define qual_createSpecial() qual_createPlain (QU_SPECIAL) | |
350 | # define qual_createKeep() qual_createPlain (QU_KEEP) | |
351 | # define qual_createKept() qual_createPlain (QU_KEPT) | |
352 | # define qual_createTemp() qual_createPlain (QU_TEMP) | |
353 | # define qual_createShared() qual_createPlain (QU_SHARED) | |
354 | # define qual_createNull() qual_createPlain (QU_NULL) | |
355 | # define qual_createIsNull() qual_createPlain (QU_ISNULL) | |
356 | # define qual_createRelNull() qual_createPlain (QU_RELNULL) | |
357 | # define qual_createReturned() qual_createPlain (QU_RETURNED) | |
358 | # define qual_createExposed() qual_createPlain (QU_EXPOSED) | |
359 | # define qual_createObserver() qual_createPlain (QU_OBSERVER) | |
360 | # define qual_createUnused() qual_createPlain (QU_UNUSED) | |
361 | # define qual_createExternal() qual_createPlain (QU_EXTERNAL) | |
362 | # define qual_createSef() qual_createPlain (QU_SEF) | |
363 | # define qual_createChecked() qual_createPlain (QU_CHECKED) | |
364 | # define qual_createCheckMod() qual_createPlain (QU_CHECKMOD) | |
365 | # define qual_createCheckedStrict() qual_createPlain (QU_CHECKEDSTRICT) | |
366 | # define qual_createUnchecked() qual_createPlain (QU_UNCHECKED) | |
367 | # define qual_createUndef() qual_createPlain (QU_UNDEF) | |
368 | # define qual_createKilled() qual_createPlain (QU_KILLED) | |
885824d3 | 369 | |
28bf4b0b | 370 | |
371 | # define qual_createNullTerminated() qual_createPlain (QU_NULLTERMINATED) | |
28bf4b0b | 372 | |
373 | /* start modifications */ | |
374 | /* This is used to check if we the qualifier matches any of the | |
375 | len/size/nullterminated types */ | |
376 | ||
377 | extern bool qual_isBufQualifier(/*@sef@*/ qual) /*@*/; | |
378 | ||
379 | # define qual_isBufQualifier(q) \ | |
380 | (qual_isNullTerminated(q)) | |
381 | ||
382 | /* end of modification/s */ | |
885824d3 | 383 | |
384 | extern bool qual_isGlobCheck (/*@sef@*/ qual p_q) /*@*/ ; | |
385 | # define qual_isGlobCheck(q) \ | |
386 | (qual_isChecked (q) || qual_isCheckMod (q) \ | |
387 | || qual_isUnchecked (q) || qual_isCheckedStrict (q)) | |
388 | ||
389 | # define qual_isNullPred(q) \ | |
390 | (qual_isTrueNull (q) || qual_isFalseNull (q)) | |
391 | ||
392 | # define qual_isRefQual(q) \ | |
393 | (qual_isRefCounted(q) || qual_isRefs(q) || qual_isNewRef (q) || \ | |
394 | qual_isKillRef (q) || qual_isTempRef (q)) | |
395 | ||
28bf4b0b | 396 | extern bool qual_isNullStateQual (/*@sef@*/ qual) /*@*/ ; |
397 | # define qual_isNullStateQual(q) \ | |
398 | (qual_isNull (q) || qual_isIsNull (q) || qual_isRelNull (q) \ | |
399 | || qual_isNotNull (q)) | |
400 | ||
885824d3 | 401 | # define qual_isTypeQual(q) \ |
e5081f8c | 402 | (qual_isAbstract(q) || qual_isNumAbstract(q) || qual_isConcrete(q) \ |
403 | || qual_isMutable(q) || qual_isImmutable(q)) | |
404 | ||
405 | # define qual_isEitherAbstract(q) \ | |
406 | (qual_isAbstract(q) || qual_isNumAbstract(q)) | |
885824d3 | 407 | |
408 | # define qual_isControlQual(q) (qual_isExits(q) || qual_isMayExit (q)) | |
409 | # define qual_isStorageClass(q) (qual_isExtern(q) || qual_isStatic(q)) | |
410 | # define qual_isCQual(q) \ | |
411 | (qual_isAuto(q) || qual_isRegister(q) || qual_isInline(q) \ | |
412 | || qual_isConst(q) || qual_isVolatile(q) || qual_isShort(q) \ | |
413 | || qual_isLong (q) || qual_isSigned (q) || qual_isUnsigned (q)) | |
414 | ||
415 | # define qual_isAllocQual(q) \ | |
416 | (qual_isOut (q) || qual_isIn (q) || qual_isSpecial (q) \ | |
417 | || qual_isPartial (q) || qual_isRelDef (q)) | |
418 | ||
419 | # define qual_isGlobalQual(q) \ | |
420 | (qual_isUndef(q) || qual_isKilled (q)) | |
421 | ||
422 | # define qual_isImplied(q) (qual_isImpOnly(q)) | |
885824d3 | 423 | # define qual_isExQual(q) (qual_isExposed (q) || qual_isObserver (q)) |
424 | ||
425 | # define qual_isAliasQual(q) \ | |
426 | (qual_isOnly(q) || qual_isImpOnly(q) || qual_isTemp(q) \ | |
427 | || qual_isOwned (q) || qual_isShared (q) || qual_isUnique (q) \ | |
428 | || qual_isDependent (q) || qual_isKeep (q) || qual_isKept (q)) | |
429 | ||
430 | extern bool qual_isExitQual (/*@sef@*/ qual p_q) /*@*/ ; | |
431 | # define qual_isExitQual(q) \ | |
432 | (qual_isExits (q) || qual_isNeverExit (q) || qual_isMayExit (q) \ | |
433 | || qual_isTrueExit (q) || qual_isFalseExit (q)) | |
434 | ||
e5081f8c | 435 | extern char qual_abstractCode (qual) /*@*/ ; |
436 | extern qual qual_abstractFromCodeChar (char) /*@*/ ; | |
437 | ||
885824d3 | 438 | # else |
439 | # error "Multiple include" | |
440 | # endif | |
441 | ||
442 | ||
28bf4b0b | 443 | |
444 | ||
445 |